Skip to content
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待

声明参考

本指南的目的是教你如何编写高质量的定义文件。 本指南通过展示某些 API 的文档以及该 API 的示例用法,并解释如何编写相应的声明来组织内容。

这些示例大致按复杂度递增的顺序排列。

具有属性的对象

文档

全局变量 myLib 有一个用于创建问候语的函数 makeGreeting, 以及一个属性 numberOfGreetings,表示迄今为止创建的问候语数量。

代码

ts
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);

let count = myLib.numberOfGreetings;

声明

使用 declare namespace 来描述通过点号表示法访问的类型或值。

ts
declare namespace myLib {
  function makeGreeting(s: string): string;
  let numberOfGreetings: number;
}

重载函数

文档

getWidget 函数接受一个数字并返回一个 Widget,或者接受一个字符串并返回一个 Widget 数组。

代码

ts
let x: Widget = getWidget(43);

let arr: Widget[] = getWidget("all of them");

声明

ts
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];

可重用类型(接口)

文档

指定问候语时,你必须传递一个 GreetingSettings 对象。 该对象具有以下属性:

1 - greeting:必需的字符串

2 - duration:可选的时间长度(以毫秒为单位)

3 - color:可选的字符串,例如 '#ff00ff'

代码

ts
greet({
  greeting: "hello world",
  duration: 4000
});

声明

使用 interface 来定义具有属性的类型。

ts
interface GreetingSettings {
  greeting: string;
  duration?: number;
  color?: string;
}

declare function greet(setting: GreetingSettings): void;

可重用类型(类型别名)

文档

任何需要问候语的地方,你都可以提供一个 string、一个返回 string 的函数或一个 Greeter 实例。

代码

ts
function getGreeting() {
  return "howdy";
}
class MyGreeter extends Greeter {}

greet("hello");
greet(getGreeting);
greet(new MyGreeter());

声明

你可以使用类型别名作为类型的简写:

ts
type GreetingLike = string | (() => string) | MyGreeter;

declare function greet(g: GreetingLike): void;

组织类型

文档

greeter 对象可以记录到文件或显示警告框。 你可以向 .log(...) 提供 LogOptions,向 .alert(...) 提供 alert 选项。

代码

ts
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });

声明

使用命名空间来组织类型。

ts
declare namespace GreetingLib {
  interface LogOptions {
    verbose?: boolean;
  }
  interface AlertOptions {
    modal: boolean;
    title?: string;
    color?: string;
  }
}

你也可以在一个声明中创建嵌套命名空间:

ts
declare namespace GreetingLib.Options {
  // 通过 GreetingLib.Options.Log 引用
  interface Log {
    verbose?: boolean;
  }
  interface Alert {
    modal: boolean;
    title?: string;
    color?: string;
  }
}

文档

你可以通过实例化 Greeter 对象来创建一个问候器,或者通过扩展它来创建一个定制的问候器。

代码

ts
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();

class SpecialGreeter extends Greeter {
  constructor() {
    super("Very special greetings");
  }
}

声明

使用 declare class 来描述一个类或类对象。 类可以具有属性、方法以及构造函数。

ts
declare class Greeter {
  constructor(greeting: string);

  greeting: string;
  showGreeting(): void;
}

全局变量

文档

全局变量 foo 包含当前存在的 widget 数量。

代码

ts
console.log("Half the number of widgets is " + foo / 2);

声明

使用 declare var 来声明变量。 如果变量是只读的,你可以使用 declare const。 如果变量是块级作用域的,你也可以使用 declare let

ts
/** 当前存在的 widget 数量 */
declare var foo: number;

全局函数

文档

你可以调用函数 greet 并传入一个字符串,向用户显示问候语。

代码

ts
greet("hello, world");

声明

使用 declare function 来声明函数。

ts
declare function greet(greeting: string): void;