在打字稿中不重复地创建文字
问题描述:
如何使用文字类型创建只读对象而不重复该值。在打字稿中不重复地创建文字
工作与例如“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;
}
答
可以使用readonly
修饰符来声明常量属性(在本例中为文字属性)。
class Settings {
constructor(public id: any) { }
readonly appType: "myLiteralValue";
}
const createSettings = (id: any) => new Settings(id);
打破如何?你什么意思? –
[这部分文档](https://www.typescriptlang.org/docs/handbook/advanced-types.html#discriminated-unions)有帮助吗?我不确定“重复”是什么意思。你总是可以使用'const',而不是使用typeof来获得文字类型。 –
@NitzanTomer我更新了示例,并加以澄清 –