typeof
型演算子
JavaScriptには、*式*コンテキストで使用できるtypeof
演算子が既にあります。
tsTry
// Prints "string"console .log (typeof "Hello world");
TypeScriptでは、*型*コンテキストで使用できるtypeof
演算子が追加され、変数またはプロパティの*型*を参照できます。
tsTry
lets = "hello";letn : typeofs ;
これは基本型にはあまり役に立ちませんが、他の型演算子と組み合わせることで、typeof
を使用して多くのパターンを便利に表現できます。例として、定義済みの型`ReturnType
tsTry
typePredicate = (x : unknown) => boolean;typeK =ReturnType <Predicate >;
関数名に`ReturnType`を使用しようとすると、有益なエラーが表示されます。
tsTry
functionf () {return {x : 10,y : 3 };}type'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'?P =ReturnType <>; f
*値*と*型*は同じものではないことに注意してください。*値`f`*が持つ*型*を参照するには、`typeof`を使用します。
tsTry
functionf () {return {x : 10,y : 3 };}typeP =ReturnType <typeoff >;
制限事項
TypeScriptは、`typeof`を使用できる式の種類を意図的に制限しています。
具体的には、識別子(つまり変数名)またはそのプロパティに対してのみ`typeof`を使用できます。これは、実行されていると考えているが実際には実行されていないコードを書くという混乱しやすい罠を避けるのに役立ちます。
tsTry
// Meant to use = ReturnType<typeof msgbox>let',' expected.1005',' expected.shouldContinue : typeofmsgbox ( "Are you sure you want to continue?");