Когда я устанавливаю определения машинописи с помощью npm, я могу использовать их в файлах машинописи, которые являются частью сборки Visual Studio:
- Создание нового базового веб-приложения ASP.NET в Visual Studio
- Добавить jQuery с помощью libman
- Добавить jQuery с помощью
npm install @types/jQuery
- Создать новый машинописный файл: wwwroot / js / site.ts.Это добавляет
<TypeScriptCompile Include="wwwroot\js\site.ts" />
к .csproj. - Теперь я могу использовать глобальную переменную
$
в моих файлах машинописи
Однако, когда я использую libman для загрузки определений машинописи, яУ меня проблемы с настройкой сборки машинописи для их использования.
Я думаю, мне нужно добавить tsconfig.json, но, похоже, это мешает TypeScriptCompile в csproj.
wwwroot
js
site.d.ts
site.ts
lib
jquery
jquery.min.js
@types
jquery
index.d.ts
misc.d.ts
…
MyProject.csproj
libman.json
Как мнеизмените проект (.csproj, tsconfig.json) так, чтобы я работал с файлами определений и глобальными переменными в wwwroot \ lib \ @types вместо node_modules / @ types?
Я создал tsconfig.jsonи установите
"compilerOptions": {
"typeRoots": [ "wwwroot/lib/@types" ]
}
, но теперь сборка возвращает ошибки типа «Не удается найти имя MyInterface» в site.ts.MyInterface определяется в site.d.ts.Почему тип был распознан, когда tsconfig.json не было, а теперь нет?Я хочу не добавлять ///<reference>
комментариев
РЕДАКТИРОВАТЬ:
Я закончил с переименованием site.d.ts в global.d.ts (благодаря @ itminus answer) и явное указание пути к модулю popper.js в tsconfig:
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"paths": {
"popper.js": [ "wwwroot/lib/popper.js" ] //use this instead of wwwroot/lib/@types/popper.js which is incompatible
},
"typeRoots": [ "wwwroot/lib/@types" ]
},
"include": [ "wwwroot/js/**/*.ts" ]
}
popper.js - это зависимость начальной загрузки 4. Это довольно сложно, потому что @types/bootstrap
зависит от popper.js
вместо @types/popper.js
(что несовместимо и приведет к ошибкам машинописания в @ types / bootstrap / index.d.ts);
К счастью, popper.js содержит определения машинописи (index.d.ts), япросто нужно было указать компилятору машинописного текста, где его искать.