例
このガイドの目的は、質の高い定義ファイルの書き方を指南することです。 このガイドでは、APIのサンプルとそのAPIの使用例、および対応する宣言の記述方法を示しています。
これらの例は、概ね下にいくほど複雑な順に並べられています。
グローバル変数
ドキュメント
数値(number)を含むグローバルなfoo
変数。
console.log("Half the number of widgets is " + (foo / 2));
declare var
を使用して変数を定義します。
変数が読み込み専用であれば、declare const
を使用します。
また、変数がブロックスコープであれば、declare let
を使用することも可能です。
/** The number of widgets present */
declare var foo: number;
グローバル関数
ドキュメント
関数greet
に文字列を指定して呼び出すと、ユーザーに挨拶します。
greet("hello, world");
declare functions
を使用して関数を宣言します。
declare function greet(greeting: string): void;
プロパティを持つオブジェクト
ドキュメント
グローバル変数myLib
は挨拶を生成する関数makeGreeting
と、
これまでに生成された挨拶の数を示すnumberOfGreetings
プロパティを持ちます。
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);
let count = myLib.numberOfGreetings;
declare namespace
を使用して、ドット付きでアクセスされる型または値を記述します。
declare namespace myLib {
function makeGreeting(s: string): string;
let numberOfGreetings: number;
}
オーバーロード関数
ドキュメント
getWidget
関数は数値を受け取り、ウィジェットを返します。
または、文字列を受け取り、ウィジェットの配列を返します。
let x: Widget = getWidget(43);
let arr: Widget[] = getWidget("all of them");
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];
再利用可能な型(インターフェース)
ドキュメント
グリーティングを指定するときは、GreetingSettings
オブジェクトを渡す必要があり、
このオブジェクトには次のプロパティがあります。
- greeting: (必須) 文字列
- duration: (任意) 時間(ミリ秒)
- color: (任意) 文字列(例: '#ff00ff')
greet({
greeting: "hello world",
duration: 4000
});
プロパティの型の定義には、インターフェースを使用します。
interface GreetingSettings {
greeting: string;
duration?: number;
color?: string;
}
declare function greet(setting: GreetingSettings): void;
再利用可能な型(型エイリアス)
ドキュメント
挨拶を返すことが期待できるものであれば、文字列、文字列を返す関数、またはGreeter
インスタンスが提供可能です。
function getGreeting() {
return "howdy";
}
class MyGreeter extends Greeter { }
greet("hello");
greet(getGreeting);
greet(new MyGreeter());
型エイリアスを使用して、型の省略形を作ることができます。
type GreetingLike = string | (() => string) | Greeting;
declare function greet(g: GreetingLike): void;
型の組織化
ドキュメント
greeter
オブジェクトは、ファイルにログを記録したり、アラートを表示することができます。
.log(...)
用にLogOptions
を、.alert(...)
用にAlertOptions
を提供します。
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });
名前空間を使用して、型を組織化します。
declare namespace GreetingLib {
interface LogOptions {
verbose?: boolean;
}
interface AlertOptions {
modal: boolean;
title?: string;
color?: string;
}
}
また、1つの宣言に名前空間を入れ子にして作成することも可能です。
declare namespace GreetingLib.Options {
// GreetingLib.Options.Logを介して参照
interface Log {
verbose?: boolean;
}
interface Alert {
modal: boolean;
title?: string;
color?: string;
}
}
クラス
ドキュメント
Greeter
オブジェクトをインスタンス化することで挨拶を作成したり、
それを拡張してカスタマイズされた挨拶を作成したりすることができます。
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();
class SpecialGreeter extends Greeter {
constructor() {
super("Very special greetings");
}
}
declare class
を使用して、クラスまたはクラスのようなオブジェクトを記述します。
クラスは、プロパティとメソッドだけでなく、コンストラクタも持つことができます。
declare class Greeter {
constructor(greeting: string);
greeting: string;
showGreeting(): void;
}
© https://github.com/Microsoft/TypeScript-Handbook
このページは、ページトップのリンク先のTypeScript-Handbook内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- ドキュメントの情報が古い可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。