typeof型演算子

typeof型演算子

JavaScriptには、*式*コンテキストで使用できるtypeof演算子が既にあります。

ts
// Prints "string"
console.log(typeof "Hello world");
Try

TypeScriptでは、*型*コンテキストで使用できるtypeof演算子が追加され、変数またはプロパティの*型*を参照できます。

ts
let s = "hello";
let n: typeof s;
let n: string
Try

これは基本型にはあまり役に立ちませんが、他の型演算子と組み合わせることで、typeofを使用して多くのパターンを便利に表現できます。例として、定義済みの型`ReturnType`を見てみましょう。これは*関数型*を取り、その戻り値の型を生成します。

ts
type Predicate = (x: unknown) => boolean;
type K = ReturnType<Predicate>;
type K = boolean
Try

関数名に`ReturnType`を使用しようとすると、有益なエラーが表示されます。

ts
function f() {
return { x: 10, y: 3 };
}
type P = ReturnType<f>;
'f' refers to a value, but is being used as a type here. Did you mean 'typeof f'?2749'f' refers to a value, but is being used as a type here. Did you mean 'typeof f'?
Try

*値*と*型*は同じものではないことに注意してください。*値`f`*が持つ*型*を参照するには、`typeof`を使用します。

ts
function f() {
return { x: 10, y: 3 };
}
type P = ReturnType<typeof f>;
type P = { x: number; y: number; }
Try

制限事項

TypeScriptは、`typeof`を使用できる式の種類を意図的に制限しています。

具体的には、識別子(つまり変数名)またはそのプロパティに対してのみ`typeof`を使用できます。これは、実行されていると考えているが実際には実行されていないコードを書くという混乱しやすい罠を避けるのに役立ちます。

ts
// Meant to use = ReturnType<typeof msgbox>
let shouldContinue: typeof msgbox("Are you sure you want to continue?");
',' expected.1005',' expected.
Try

TypeScriptのドキュメントはオープンソースプロジェクトです。プルリクエストを送信して、これらのページの改善にご協力ください

このページの投稿者
OTOrta Therox (4)
JLJimmy Liao (1)

最終更新日: 2024年3月21日