TypeScriptの型システムは構造的です。そして、これはTypeScriptを使う理由の一つです。しかし、同じ構造を持っていても、2つの変数が異なる_型名_を持つ2つの変数を区別する必要があるシステムのユースケースがあります。非常に一般的な使用例は、identity構造(一般的にC#/Javaなどの言語において_名前_と関連するセマンティクスを持つただの文字列)です。 コミュニティでは、いくつかのパターンが登場しています。私の個人的な好みで降順に説明します: コピー/** Generic Id type */ type Id<T extends string> = { type: T, value: string, } /** Specific Id types */ type FooId = Id<'foo'>; type BarId = Id<'bar'>; /** Optiona