声明文件与模块解析
类型可以来自你的 .ts,也可以来自 .d.ts 或 DefinitelyTyped(@types/*)。
.d.ts 是什么
声明文件只描述类型,不发射运行时代码:
// shim.d.ts
declare module "legacy-lib" {
export function doStuff(x: string): number;
}
给无类型的 JS 库补类型,或为资源模块声明:
declare module "*.css" {
const classes: Record<string, string>;
export default classes;
}
@types
npm install -D @types/node
许多库自带类型(package.json 的 types/typings);没有时再装 @types/包名。
模块解析直觉
tsconfig 中:
moduleResolution: 现代项目常用bundler或NodeNextpaths: 路径别名(需与打包器/运行时配置对齐,否则运行期找不到)
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
别名是编译期映射;Vite/Webpack/Node 加载器还要各自配置。
要点
.d.ts描述形状,不生成 JS- 优先用库自带类型,其次
@types paths必须与构建工具一致- 为裸 JS 模块写最小
declare module