2017-07-14 131 views
0

一種屬性定義的含義我遇到了一個接口定義,像下面的一個:在打字稿接口

​​

什麼是屬性定義的含義是什麼?我可以在哪裏找到關於它的解釋?
是否意味着我只能將left/center/right分配給屬性assign

回答

1

確切的說,它是如何工作的。轉到Advanced Types並向下滾動到「字符串文字類型」

它基本上是一個簡化的枚舉類型,它只允許某些字符串值,並且對註釋通過「魔術字符串」接受行爲的庫進行註釋非常有用。

引用的文章:

字符串文字類型允許您指定的確切值的字符串 必須具備的。在實踐中,字符串文字類型與工會 類型,類型警衛和類型別名很好地結合在一起。您可以將這些功能 一起使用以獲取帶有字符串的類枚舉行爲。

type Easing = "ease-in" | "ease-out" | "ease-in-out"; 
class UIElement { 
    animate(dx: number, dy: number, easing: Easing) { 
     if (easing === "ease-in") { 
      // ... 
     } 
     else if (easing === "ease-out") { 
     } 
     else if (easing === "ease-in-out") { 
     } 
     else { 
      // error! should not pass null or undefined. 
     } 
    } 
} 

let button = new UIElement(); 
button.animate(0, 0, "ease-in"); 
button.animate(0, 0, "uneasy"); // error: "uneasy" is not allowed here 
0

這是正確的。這意味着你將屬性限制爲這三個值之一,有效地使它像枚舉一樣工作。

interface config { 
    align?: 'left' | 'center' | 'right'; 
} 

// this is valid 
const a: config = { 
    align:'left' 
} 

// this is not 
const b: config = { 
    align:'down' 
}