Что такое Типики в машинописном тексте

Я новичок в Angular2, и я наслаждаюсь этим до сих пор, но есть одна проблема: Типовые. Я не могу понять, как их использовать и каковы именно они. Некоторые места говорят, что используют типизацию, другие говорят, чтобы использовать npm для установки определений.

Я смущен!!

Ответы

Ответ 1

JavaScript является нетипизированным, что означает, что мы можем передавать и использовать данные, объекты и функции без ограничений. Мы можем написать код, который вызывает методы, которые не существуют на объекте, или ссылочные переменные, которых у нас нет. Такие ошибки могут быть трудно обнаружить, когда вы пишете код, и это может привести к нестабильному и ошибочному коду. Выполнение больших изменений вашего кода может стать сложным и рискованным, так как вы не сразу видите, что некоторые изменения конфликтуют с остальной частью кода где-то в другом месте.

TypeScript в основном касается добавления типов в JavaScript. Это означает, что TypeScript требует, чтобы вы точно описали формат ваших объектов и ваших данных. Когда вы это делаете, это означает, что компилятор может исследовать ваш код и обнаруживать ошибки. Он может видеть, что вы пытаетесь вызвать функцию с неправильными аргументами или ссылаться на переменную, недоступную в текущей области.

Когда вы пишете TypeScript самостоятельно, это формальное описание кода является частью самого кода.

Однако при использовании внешних библиотек, таких как jQuery или moment.js, в этом коде нет информации о типах. Поэтому, чтобы использовать его с TypeScript, вам также необходимо получить файлы, описывающие типы этого кода. Это файлы декларации типа, чаще всего с расширением имени файла .d.ts. К счастью, люди пишут такие типы файлов декларации типов для наиболее распространенных javascript-библиотек.

Типики были всего лишь инструментом для установки этих файлов. В настоящее время лучше всего использовать npm.

Когда вы установили эти файлы, которые в основном только загружают их и помещают в проект, компилятор TypeScript будет понимать * внешний код, и вы сможете использовать эти библиотеки. В противном случае вы будете получать ошибки везде.

* В зависимости от того, как вы настроили свой проект и настроили его, вам может потребоваться настроить машинописный шрифт для поиска этих файлов специально, или он может работать без какой-либо конфигурации с вашей стороны.

Ответ 2

Что такое тиски?

Короче говоря, TypeScript добавляет статическую типизацию к JavaScript. Поскольку только JavaScript не определяет такие определения типов, они должны быть записаны и включены в процесс компиляции TypeScript с помощью дополнительных механизмов. Другими словами, библиотека JavaScript может определять функцию:

export function createPerson(name, age, initScore) { ... }  

Но в статически типизированной среде TypeScript было бы гораздо полезнее для разработчика иметь что-то вроде этого:

interface Person {
    name: string,
    age: number,
    score: number
}

export function createPerson(name: string, age: number, initScore?: number): Person;

Назначение деклараций типов, часто называемых типизациями, определениями типов или просто типами, заключается в заполнении этих деталей над реализациями, что позволяет идентифицировать злоупотребления API даже между библиотеками. Они обычно находятся в файлах с расширением .d.ts и могут быть созданы из .ts файлов с использованием компилятора. Однако, когда программы не были написаны в TypeScript, эти объявления обычно записываются вручную.


С учетом сказанного ваша путаница несколько оправдана: с течением времени было сделано более одного подхода к установке и управлению объявлениями TypeScript. Однако сейчас есть официальное (и, следовательно, рекомендованное) средство установки и использования файлов декларации, и оно описано здесь:

В TypeScript 2.0 стало значительно легче потреблять файлы декларации, в приобретении, использовании и поиске. На этой странице подробно описано, как сделать все три

[...]

Получение объявлений типа в TypeScript 2.0 и выше не требует никаких инструментов, кроме npm.

Например, извлечение объявлений для Angular так же просто, как установка этой зависимости в вашем проекте:

npm install --save @types/angular 

Пакеты в пространстве имен @types будут автоматически рассмотрены компилятором для получения объявлений типов. Кроме того, если эти объявления уже встроены в пакет npm, вам не нужно ничего делать, кроме как устанавливать этот пакет (примером такого пакета является сокращение). Для получения дополнительной информации см. Документы на tsconfig.json. Существует также целый раздел о создании собственных файлов деклараций, который рекомендуется прочитать всем разработчикам, желающим добавить объявления типов в свои собственные библиотеки.

Ответ 3

Я работал только с TypeScript в ASP.NET (классическом) проекте, поэтому я не могу сказать вам, что типичный способ сделать это. Но есть несколько несколько неортодоксальных вариантов:

  • Найдите файлы *.d.ts самостоятельно и просто скопируйте их в свой проект где-нибудь. Однако они не будут автоматически обновляться вместе с вашими библиотеками.
  • Объявите, что библиотека дает вам, как любой. Например, вы можете сделать это для JQuery, если у вас еще нет установленных типов JQuery: declare var $: any;

Ответ 4

Я постараюсь объяснить это на простом примере. Если вы используете сторонние библиотеки, такие как jQuery, в Angular или проектах с машинописью

Вы можете напрямую ссылаться на файл jquery (файл angular.json) в проектах Angular и писать код, объявив $ или jQuery, как показано ниже

как показано ниже

declare var $: any;
ngOnInit() {
   $(document).ready(function() {
     alert('I am Called From jQuery');
   });
}

Код будет работать. Но проблема заключается в том, что машинопись - это проверка типов и обнаружение ошибок в коде только во время компиляции.

Так как машинопись не знает ничего о библиотеке jquery, она не может выполнять статическую проверку типов. код ниже компилируется без ошибок

ngOnInit() {
   $(document).ready(function() {
     $('#my-button').click(1);
 });
}

Я передаю неверный параметр в функцию щелчка в jquery, и приведенный выше код скомпилируется, и во время выполнения всякий раз, когда мы нажимаем на элемент кнопки, он выдает ошибку.

Вот где набирает текст. Но если у вас есть определения типов для jquery plug, такие ошибки могут быть обнаружены только во время компиляции.

Установите наборы jquery из пакетов узлов и сослаться на них в коде

npm install --save jquery
npm install --save @types/jquery

И импортировать объект jquery в код, как показано ниже

import * as $ from 'jquery';

А теперь приведенный выше код не скомпилируется и выдает ошибку, говоря

Argument of type ‘1 is not assignable to parameter of type ‘false | EventHandlerBase<HTMLElement, ClickEvent<HTMLElement, null, HTMLElement, HTMLElement>>

Вы можете прочитать больше на Как установить и использовать JQuery в угловых проектах