【发布时间】:2017-11-01 09:20:57
【问题描述】:
如何在不重复值的情况下创建具有文字类型的只读对象。
'myLiteralValue' 显式键入的工作示例:
const createSettings = () => ({ appType: 'myLiteralValue' as 'myLiteralValue' });
switch (createSettings().appType) {
case 'myLiteralValue':
break;
}
如果我没有明确键入,类型会扩大到 string,如果我删除重复的 '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;
}
【问题讨论】:
-
破解如何?什么意思?
-
this part of the documentation 有帮助吗?我不确定您所说的“重复”是什么意思。您始终可以使用
const而不是使用 typeof 来获取文字类型。 -
@NitzanTomer 我用澄清更新了示例
-
@SebastianSebald 有点像,但我仍然需要为该类型创建一个接口,这将使我在接口中重复字符串“myLiteralValue”
-
你的真实代码是什么样的?显然,
appType可以有更多值,因此文字也有多个值,而不是像您的示例中那样只有一个。此外,即使appType是字符串,您的代码在操场上也很好,那么到底是什么问题?
标签: typescript