Типы машинописного текста для кода, который не импортируется машинописным шрифтом? - PullRequest
0 голосов
/ 08 ноября 2018

Это проблема с приложением Angular, но я не думаю, что это проблема, специфичная для углов.

Я работаю над приложением Angular 7 и работаю с несколькими библиотеками, которые импортируются с помощью тегов сценария на внешнем интерфейсе из других источников (Stripe, recaptcha, googletags и т. Д.). Я буду использовать Stripe в качестве примера здесь, потому что Stripe абсолютно требует, чтобы клиентская библиотека импортировала из Stripe.js клиентом для соответствия PCI, поэтому со стороны исходного сервера это не вариант.

Я установил типы для Stripe из DefiniteTyped. Если я добавлю declare let Stripe: any; и использую Stripe в компоненте, он будет работать, но, конечно, это не типобезопасно. Если я опускаю объявление, VSCode находит типы нормально, и редактор улавливает ошибки типов, но не компилируется, (error TS2304: Cannot find name 'Stripe'.) предположительно, потому что у меня нет оператора import для Stripe.

Есть ли способ намекнуть TypeScript, что он должен использовать типы из DefiniteTyped для отлова ошибок типов без импорта самой библиотеки Stripe?

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

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Ответ на мой вопрос выглядит здесь: @types/googlemaps/index.d.ts 'не является модулем То есть я могу использовать директиву triple slash или объявить модуль в корневом файле typings.d.ts.

0 голосов
/ 08 ноября 2018

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

Итак, я скопировал файл определения типа (обычно index.d.ts) в свою кодовую базу.

После этого вы можете сделать что-то вроде:

import {SomeType} from "sometype.d.ts"
declare let ObjectImportedFromHTMLScriptTag: SomeType;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...