创建文字而不重复打字稿

时间:2017-05-31 14:05:56

标签: typescript

如何创建具有文字类型的只读对象而不重复该值。

明确输入' myLiteralValue' 的工作示例:

const createSettings = () => ({ appType: 'myLiteralValue' as 'myLiteralValue' });

switch (createSettings().appType) {
  case 'myLiteralValue':
    break;
}

如果我没有明确输入字符串,那么该类型会扩展为字符串如果我删除了重复的' myLiteralValue'

const createSettings = () => ({ appType: 'myLiteralValue' });

switch (createSettings().appType) {
  case 'myLiteralValue':
    break;
}

虽然将 appType 分解为const但仍然以不同的方式重复:

const myLiteralValue = 'myLiteralValue';
const createSettings = () => ({ appType: myLiteralValue });

switch (createSettings().appType) {
  case 'myLiteralValue':
    break;
}

1 个答案:

答案 0 :(得分:1)

您可以使用readonly修饰符来声明常量属性(在本例中为文字属性)。

class Settings {
    constructor(public id: any) { }
    readonly appType: "myLiteralValue";
}

const createSettings = (id: any) => new Settings(id);