需要注意:使用 declare关键字时,我们不需要编写声明的变量、函数、类的具体实现(因为变量、函数、类在其他库中已经实现了),只需要声明其类型即可,
declare 变量
declare var val1: string;
declare let val2: number;
declare const val3: boolean;
declare 函数
delare function toString(x: number) => number
declare 类
declare class Person {
public name: string;
private age: number;
constructor(name: string);
getAge(): number;
}
declare 枚举
注意:声明枚举仅用于编译时的检查,编译完成后,声明文件中的内容在编译结果中会被删除, 相当于仅剩下面使用的语句:
declare enum Direction {
Up,
Down,
Left,
Right,
}
const directions = [Direction.Up, Direction.Down, Direction.Left, Direction.Right];
const directions = [Direction.Up, Direction.Down, Direction.Left, Direction.Right];
declare 模块
声明模块的语法:declare module ‘模块名’ {}。在模块声明的内部,我们只需要使用 export 导出对应库的类、函数即可。
declare 文件
declare module '*.jpg' {
const src: string;
export default src;
}
declare module '*.png' {
const src: string;
export default src;
}
declare namespace
不同于声明模块,命名空间一般用来表示具有很多子属性或者方法的全局对象变量。
declare namespace $ {
const version: number;
function ajax(settings?: any): void;
}
$.version; // => number
$.ajax();
声明文件
在 TypeScript 中,以 .d.ts 为后缀的文件为声明文件。
在 TypeScript 中,存在类型、值、命名空间这 3 个核心概念。如果你掌握了这些核心概念,那么就能够为任何形式的类型书写声明文件了。