このガイドの目的は、高品質な定義ファイルの書き方を学ぶことです。このガイドは、いくつかの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(...)` にはアラートオプションを提供できます。
コード
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;}}
1つの宣言でネストされた名前空間を作成することもできます。
ts
declare namespace GreetingLib.Options {// Refer to via GreetingLib.Options.Loginterface Log {verbose?: boolean;}interface Alert {modal: boolean;title?: string;color?: string;}}
クラス
ドキュメント
`Greeter` オブジェクトをインスタンス化してgreeterを作成するか、それから拡張してカスタマイズされた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` には、存在するウィジェットの数が含まれています。
コード
ts
console.log("Half the number of widgets is " + foo / 2);
宣言
変数を宣言するには declare var
を使用します。変数が読み取り専用の場合は、declare const
を使用できます。変数がブロックスコープの場合は、declare let
を使用することもできます。
ts
/** The number of widgets present */declare var foo: number;
グローバル関数
ドキュメント
文字列を使用して関数
greet
を呼び出すと、ユーザーに挨拶を表示できます。
コード
ts
greet("hello, world");
宣言
関数を宣言するには、declare function
を使用します。
ts
declare function greet(greeting: string): void;