【发布时间】:2022-01-19 05:28:30
【问题描述】:
我想在接口属性定义中使用所有可能性,但找不到一种方法,只能手动键入它们。
// interface definition
interface Block {
shape: 'square' | 'cycle' | 'triangle';
}
// I want to get a list of all shapes
const shapes: Block['shape'][] = ['square', 'cycle', 'triangle'];
我认为这是一个普遍的问题,我只是没有得到确切的关键字来搜索答案,请帮助。 非常感谢!
【问题讨论】:
-
TS 编译成 JS 时类型系统被擦除,这样 JS 看起来像
const shapes = ['square', 'psycho', 'triangle']。这些字符串名称在 JS 中只出现一次;你不能删除它们。我在这里的建议是做与你所要求的相反的事情;定义shapes,然后根据它定义Block,如this。这对你有用吗? -
嗨@jcalz 感谢您的帮助!如果在 TS 中无法做到这一点,那我就放手吧。感谢您为我提供明确的答案。就我而言,我不能反过来做,因为类型定义是从 swagger api json 生成的,叹息。
标签: typescript typescript-generics