2017-06-19 82 views
0

我希望能夠在使用它之前確定某種類型的東西。因此,當字段爲布爾值時,我想要將值「y」和「N」轉換爲布爾值。
我不想硬編碼字段,所以我通過對象循環來設置值。在設置之前有什麼方法可以檢查該類型嗎?Typescript從未定義的類中獲取類型

下面是一個對象的例子:

export class test { 
    id: string; 
    foo: number; 
    bar: boolean; 
} 

我曾嘗試這樣做,但是代碼直到值已經被設置則返回undefined ...但是到那個時候我可以覆蓋哪些對象應該是(像它會是字符串現在)

typeof test['bar'] 
+3

你不能。雖然這些屬性存在於打字稿上下文中,但是當您編譯爲js時,這些屬性都消失了。保留它們的唯一方法是給它們分配一個值,或者你可以使用[metadata decorators](https://www.typescriptlang.org/docs/handbook/decorators.html#metadata)爲你保存 –

+0

@ NitzanTomer,你是否認爲在課堂上增加一套條形碼並讓它符合邏輯可以解決我需要的內容? 這樣的事情: class test { bar:boolean; set bar(bar:boolean | string){this.bar =(typeof bar ===「string」)? ((bar ===「Y」)?true:false):bar; } –

+0

是的,這是'setters'背後的想法。但是你將無法打電話給你的成員'bar'並以同樣的方式命名該方法。通常,在這種情況下,人們使用'_bar'。另外,下次編輯您的問題並在其中添加代碼,並只回復問題已更新。評論中的代碼很難閱讀 –

回答

-1

我希望能夠確定什麼類型之前,我用它

對於課程,您可以使用instanceof。例如

class Foo{} 
const foo = new Foo(); 
console.log(foo instanceof Foo); // TRUE 

更多

打字稿沒有超出JavaScript有特殊的運行時類型信息。也就是說,TypeScript理解使用JavaScript元數據檢查如instanceoftypeof