gpt4 book ai didi

visual-studio - 如何使用 libman 而不是 npm 来下载 typescript 定义

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:38 25 4
gpt4 key购买 nike

当我使用 npm 安装 typescript 定义时,我可以在属于 Visual Studio 构建的 typescript 文件中使用它们:

  1. 在 Visual Studio 中创建新的 ASP.NET Core Web 应用程序
  2. 使用 libman 添加 jQuery
  3. 使用 npm install @types/jQuery 添加 jQuery
  4. 创建新的 typescript 文件:wwwroot/js/site.ts。这增加了 <TypeScriptCompile Include="wwwroot\js\site.ts" />到 .csproj。
  5. 我现在可以使用 $我的 typescript 文件中的全局变量

但是,当我使用 libman 下载 typescript 定义时,我在配置 typescript 构建以使用它们时遇到了麻烦。

我想我需要添加 tsconfig.json,但它似乎会干扰 csproj 中的 TypeScriptCompile。

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" ]
}

但现在构建在 site.ts 中返回错误,例如“找不到名称 MyInterface”。 MyInterface 在 site.d.ts 中定义。为什么在没有 tsconfig.json 时可以识别类型,而现在却不能?我想避免添加 ///<reference>评论

编辑:

我最终将 site.d.ts 重命名为 global.d.ts(感谢 @itminus answer),并在 tsconfig 中显式设置 popper.js 模块的路径:

{
"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 是 bootstrap 4 的依赖项。这有点棘手,因为 @types/bootstrap依赖于 popper.js而不是 @types/popper.js (这是不兼容的,会在@types/bootstrap/index.d.ts 中引发 typescript 错误);

幸运的是,popper.js 包含 typescript 定义 (index.d.ts),我只需要告诉 typescript 编译器在哪里查看它。

最佳答案

我想原因是您将 site.tssite.d.ts 放在同一个文件夹下。结果,只加载了 site.ts 文件。

参见 discussion here

The resolution process always favors the .ts files over .d.ts. the rational here is that a .d.ts file can be generated from the .ts file, so the .ts file is a more up-to-date version of the truth

将您的 site.d.ts 移动到其他文件夹,或将其重命名为 site.global.d.ts。两者对我来说都完美无缺。

关于visual-studio - 如何使用 libman 而不是 npm 来下载 typescript 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53536608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com