如果我有類自動初始化成員字段字符串文本類型的打字稿
class Foo {
type: "foo"
constructor(public id: number) {}
}
class Bar {
type: "bar"
constructor(public id: number) {}
}
type SomeUnion = Foo | Bar // (x : SomeUnion).type will have the type "foo" | "bar"
建設的new Foo(1)
實例將產生{ id: 1 }
在運行時,但我想獲得{ id: 1, type: "foo" }
。
一個簡單的解決方案當然是鍵入字符串常量兩次,通過在構造函數中指定它,例如this.type = "class_name"
。
但是,這是非理想的,因爲我需要輸入相同的字符串常量兩次。這不是一個大問題,但這是人們可以忘記並導致錯誤的東西。
有沒有辦法自動創建與字符串文字具有相同值的對象的成員?
您希望字段類型都是''class_name「'*和*類型的初始值''class_name」'。我問,因爲我不是100%確定你不只是混淆了類型聲明和字段初始化。 (並且你得到的答案將類型設置爲'string'。) – Louis
是的,重要的是該類型是字符串文本,而不是通用的'string',以便將其用於程序中其他位置的聯合類型。 – Advecticity