Angular импортирует типы на основе значений compilerOptions.types
и compilerOptions.typeRoots
из файла конфигурации typescript. справочная документация по компиляторам TS
По умолчанию проекты Angular, созданные с использованием angular cli, будут иметь два файла конфигурации typescript.
tsconfig.json
в корне проекта
tsconfig.app.json
в каталоге /src
Если и types
, и typeRoots
не определены, angular импортирует все типы из node_modules/@types/*
.
Но если какой-либо из них имеет какое-либо значение, будут импортированы только указанные типы или типы из указанного местоположения. Например: types: ['stripe-v3'] or typeRoots: ['/someDir']
. Таким образом, все другие установленные типы в node_modules/@types/*
не будут импортированы.
Если установлен пустой массив, то никакие типы не будут автоматически импортированы из node_modules/@types
. types: [] or typeRoots: []
.
По умолчанию compilerOptions.types
в tsconfig.app.json
будет иметь значение пустого массива. Это причина, по которой angular не получает установленные типизации из node_modules/@types/*
автоматически.
Чтобы исправить это: npm install @types/stripe-v3
наборы и в tsconfig.app.json
- Либо добавьте
stripe-v3
к types
.
...
"compilerOptions": {
...
"types": ['stripe-v3']
}
- Или удалите типы из компилятораOptions
Если вы добавите, вам придется добавлять все будущие типизации в этот массив.
Вместо этого, если вы удалите types
из compilerOptions
, angular автоматически импортирует все будущие типы.
Также не забудьте проверить types
и typeRoots
в tsconfig.js
. typeRoots
будет иметь относительные пути в виде массива, и здесь применяется та же логика.
person
Krishna Pravin
schedule
06.09.2019
import { Stripe } from 'stripe-v3';
, вы получите сообщение об ошибке «полоса-v3 не является модулем», потому что файл index.d.ts действительно не объявляет модуль, он предназначен для объявления этого глобального var Stripe при включении компилятор - person Robin De Schepper   schedule 19.02.2019