4
我想給類對象提供唯一的id類型,即使它們都是字符串。我嘗試使用type
,我嘗試從具有唯一子類名稱的基類派生。在TypeScript中創建基本類型的唯一類型?
請看下面的例子。 type
和extends
都不允許我指示編譯器將它們視爲唯一類型。我仍然可以將HumanId傳遞給期望AnimalId的函數,反之亦然。
我知道它們是對象兼容的,而且從底層的JavaScript角度來看,這是非常重要的。事實上,如果我的唯一成員添加到AnimalId,我得到的錯誤我想到:
Argument of type 'HumanId' is not assignable to parameter of type 'AnimalId'.
是否與打字稿一個很好的方法,使獨特類型的別名基本類型?
// type HumanId = string;
// type AnimalId = string;
class id {
constructor(public value: string) { }
toString(): string { return this.value;}
}
class HumanId extends id { };
class AnimalId extends id { };
function humanTest(id: HumanId): void {
}
function animalTest(id: AnimalId): void {
}
let h: HumanId = new HumanId("1");
let a: AnimalId = new AnimalId("2");
animalTest(h);
是啊。感謝您確認我不缺少語言功能。我認爲能夠聲明'type HumanId = unique string'會很好。利用編譯時檢查基本類型以用於特定目的的一些方法。 – Nimai
爲了什麼是值得的,我使用了最簡單的單行語法,並且做到了:'class HumanId extends BaseId {humanId}' – Nimai
如果你想要的只是類型檢查,也許你可以引入HumanId和AnimalId作爲類型.d.ts聲明文件? – Kokodoko