【ISSUE】[TypeScript]typeof型とkeyof型についてのまとめ
2024年12月23日 8:40
typeof型は、変数やオブジェクトの型を取得する機能です。
変数やオブジェクトの実際の値ではなく、その型情報を取得する際に使います。
このコードでは、「typeof obj」とすることで、「obj」オブジェクトの型を取得し、「type L」に適用させています。
keyof型は、オブジェクト型からそのオブジェクトのプロパティ名を型として取得する機能です。
このコードは、「Person」からプロパティである「name」を取得し、「PersonKey」に反映させているコードになります。
こちらも先ほどのと考え方は同じで、「Human」を指定することで、全てのプロパティを取得し、ユニオン型として適用させることができます。
このコードでは、HumanKey型は、「keyof Human」として宣言され、Human型のプロパティ名を文字列リテラル型として取得しています。つまり、HumanKeyは「"name" | "age"」という文字列型のユニオン型です。
最後の行で、「key = "hoge";」 としていますが、これはエラーとなります。なぜなら、「"hoge"」は HumanKey 型に含まれていないため、key の型としては許容されないからです。この行がエラーになることで、型の一貫性が保たれ、予期せぬ挙動を防ぐことができます。
「keyof」で何も指定しなかった場合、そのオブジェクトに対するキーが存在しないため、「never」型が結果となります。
「keyof」で「any」型を指定した場合、その型のすべてのプロパティのキーが取得され、結果として、「string」「number」「symbol」のユニオン型が取得できます。
このコードは、keyofとtypeofを併用して型定義をしているコードです。
この箇所では、「value」はnumber型を定義して、数値以外を受け取れないようにしています。
「unit」では、typeofで「mmConversionTable」の各プロパティの型情報を取得し、keyofで型情報の
https://typescriptbook.jp/reference/values-types-variables/typeof-operator
https://typescriptbook.jp/reference/type-reuse/keyof-type-operator
他にも色々な記事を書いているので、よければ読んでいってください、、、
https://qiita.com/hukuryo/items/97797a91d7e2ee0bcabc
https://qiita.com/hukuryo/items/2c07c52ff3386d5d75b9
https://qiita.com/hukuryo/items/ebeb26823f944f143b11
[cv:issue_marketplace_engineer]
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。