模块与命名空间
模块(module)是组织代码的基本方式:每个文件是一个模块,用 export 导出、import 导入。命名空间(namespace)是 TS 自己的组织方式,现在主要用于类型和少量场景。
导出导入
export 单个、export default 默认导出、export * from 重导出。导入时按需 import { a, b }。
声明文件 .d.ts
第三方 JS 库没有类型时,需要声明文件描述类型。常见的 @types/xxx 就是社区写的声明包。declare 声明全局变量、模块。
import type
只导入类型时用 import type,编译后不产生运行时代码,避免循环依赖问题。
代码示例
// utils.ts
export interface Result { ok: boolean; data: string; }
export function makeResult(ok: boolean): Result {
return { ok, data: ok ? "成功" : "失败" };
}
const DEFAULT_MSG = "默认消息";
export default DEFAULT_MSG;
// main.ts
import DEFAULT_MSG, { makeResult, type Result } from "./utils";
const r: Result = makeResult(true);
console.log(r.data, DEFAULT_MSG);