Когда мне следует импортировать типизацию в Angular 2+ с помощью TS?

Этот вопрос связан с Angular v.2 + с TypeScript.

Когда мне следует импортировать типизацию как отдельный импорт, а когда в этом нет необходимости - как отличить эти два случая друг от друга?

В конкретном случае я установил следующие две зависимости, следуя рекомендации здесь

npm install lodash --save
npm install @types/lodash --save-dev   // <<< Do I need this as separate import or not ?!

Поправьте меня, если я ошибаюсь:

  1. Angular с TypeScript может работать без импортированных типов, НО подсказки в IDE о методах не могут работать без импортированных типов?
  2. Во многих библиотеках нет отдельного импорта для типов, потому что типы сделаны частью самой библиотеки (на основе объяснения здесь)?

person zaggi    schedule 23.07.2018    source источник


Ответы (1)


TypeScript позволяет вам иметь файлы объявлений, которые представляют собой файлы, которые позволяют описывать форму кода, написанного (например) на простом JavaScript. Таким образом, ссылаясь на один из этих файлов, вы сообщаете TypeScript, как именно этот код или библиотеку JavaScript, которые вы используете, следует считать «типизированными». Конечно, это означает, что файл объявления должен быть тщательно написан и синхронизирован с используемой вами библиотекой JavaScript.

Когда мне следует импортировать типизацию как отдельный импорт, а когда в этом нет необходимости?

Некоторая библиотека javascript, такая как jquery, lodash, написана с помощью простого javascript или не предоставляет поддержки для работы с машинописным текстом, а DefinituTyped - это отдельный проект, помогающий обеспечить поддержку набора текста для таких проектов, как jquery,lodash.

Angular с TypeScript может работать без импортированных типов, но подсказки в среде IDE о методах не могут работать без импортированных типов

Набор текста - это не только intellisense, например, предотвращение передачи неправильного параметра

$([1,2,3,4]) // for example the selector type is string not array 

Во многих библиотеках нет отдельного импорта для типов, поскольку типы являются частью самой библиотеки

Angular - отличный пример использования машинописного текста.

Как, когда программист сталкивается с новой библиотекой, которую нужно использовать без специального упоминания в документе, может решить, нужно ли ему выполнять также набор текста отдельно? (мнение)

Файлы объявлений - это работа группы авторов библиотеки / фреймворка по машинописному тексту для поддержки React, например, потому что для этого требовалась поддержка jsx, vuejs обновляет там ядро ​​для поддержки машинописного текста, и это, как я уже сказал, обеспечивает поддержку машинописного текста или набора текста в работе автора, иногда они не хотят поддерживать набор текста по какой-либо причине вам необходимо проверить ОпределенноTyped, если вам не нравится тип, связанный с библиотекой, которую вы ищете поскольку вам нужно написать файлы декларации самостоятельно, если вам это нужно.

проверьте это Что такое «DefinentyTyped»?

person malbarmavi    schedule 23.07.2018
comment
Я обновил определение вопроса, чтобы более четко выделить запрос. Можете ли вы соответственно обновить свой ответ? Спасибо - person zaggi; 23.07.2018
comment
этот оператор не имеет отношения к импорту типа import * as _ from 'lodash'; мы чисты? - person malbarmavi; 23.07.2018
comment
@zaggi надеюсь, что я помогу здесь, удачного кодирования - person malbarmavi; 23.07.2018
comment
спасибо за доработку. Можете ли вы также прокомментировать - как отличить эти два случая друг от друга, т.е.как, когда программист сталкивается с новой библиотекой для использования без специального упоминания в документе, может решить, нужно ли ему / ей также вводить данные отдельно? - person zaggi; 24.07.2018
comment
@zaggi, если на ваш вопрос есть ответ, можете ли вы принять мой ответ? , Благодарность - person malbarmavi; 28.07.2018