TypeScript一般在项目的根目录有`global.d.ts` 文件,请问有什么用呢?

TypeScript一般在项目的根目录有时候会看到,有global.d.ts 文件:

declare module '*.json' {
  export const version: string;
  export const value: any;
}

请问下,这个定义有什么用呢?

阅读 4.8k
2 个回答
✓ 已被采纳

并不是每个项目都有 global.d.ts 文件。比如 Vite 项目一般会创建一个 vite-env.d.ts 文件。

.d.ts 属于 TypeScript 的 Declaration Files 的概念,里面应该是类型声明的代码。主要有以下的用途:

  1. 使用 tsc 编译后,你写的 .ts 文件会变成可执行的 .js + .d.ts 文件,其它人使用你的 package 会执行 .js 文件,但是通过 .d.ts 文件来获得类型信息
  2. 某些项目本身不是通过 TypeScript 写的,如果需要支持 TS 类型,需要另外手写一套 .d.ts 文件来提供类型的信息,一般这种叫做 DefinitelyTyped

    • 比如一些古早的 npm library,可以通过 @types/xxx 下载对应的 types 库(如果有人写了的话),如果没有人提供的话你可以在自己的项目中新建一个 .d.ts 然后在里面编写 declare module
    • 比如 React 实际是用 flow 语言来写的(一种和 TypeScript 类似的 js 超集语言),但是提供了 @types/react 用户提供 TS 类型信息

declare module ‘*.json’ 有什么用?

在 TypeScript 2.9 之前如果你想要在 TS 中引入一个 JSON 文件,就需要这样进行类型声明。

https://stackoverflow.com/questions/49996456/importing-json-file-in-typescript

看下官方文档:https://www.typescriptlang.or...

简单地说就是全局类型定义的地方,比如css定义,偷懒时直接 declare 一个无类型的第三方库。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏