Leanote's Blog
I love Leanote!
Toggle navigation
Leanote's Blog
Home
Chrome
Git
Linux
Windows
Others
工具大全
VsCode
Expo
Html
JavaScript
Npm
Node
Mock
React-Native
React
TypeScript
小程序
插件
正则
Dva
Ant-Design-React
Umi
Vue
Vux
Ant-Design-Vue
Http
Java
flutter
开发小工具
About Me
Archives
Tags
.d.ts声明问题
2022-12-25 07:00:32
6
0
0
admin
1. 如果你有`module.ts`和`module.d.ts`在同一个文件夹中(重名),**编译器会跳过`module.d.ts`文件**,所以你的声明将不被考虑。重命名`d.ts`文件或将其移动到另一个文件夹。如果您有合适的模块,这种方法很好,但是如果您想在模块之间共享类型,最好使用`import .. from ..` 2. `.d.ts`文件中有`import`或`export`,它就会成为一个模块,并且该模块中的所有内容都必须由使用者随后导入。 ### 声明全局到单独一个文件 - 创建一个 `node_modules/@types/foo/index.d.ts` 文件,存放 `foo` 模块的声明文件。不太建议用这种方案,一般只用作临时测试。 - 创建一个 `types` 目录,专门用来管理自己写的声明文件,将 `foo` 的声明文件放到 `types/foo/index.d.ts` 中。这种方式需要配置下 `tsconfig.json` 中的 `paths` 和 `baseUrl` 字段。 ``` // path/to/project ├── src | └── foo | └── index.ts ├── types | └── foo | └── index.d.ts └── tsconfig.json // tsconfig.json { "compilerOptions": { "module": "commonjs", "baseUrl": "./", "paths": { "*": ["types/*"] } } } ``` ### 声明模块到全局 - 同上 - declare ``` declare namespace 模块名称 { // 模块名称加了引号为外部模块, 不加为作用域 // 从TS2.9开始,我们可以使用import()语法 type User = import('./user').User; export interface Request { user: User; target: User; friend: User; } export class SuperUser implements User { superPower: string; } export { User as ExpressUser } } // 使用 const xxx: 模块名称.foo = xxx ```
Pre:
tsconfig.json 常用配置项注释
Next:
用ts定义一个属性二选一的对象
0
likes
6
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.