Typescript - 没有函数的keyof

时间:2018-06-01 10:43:06

标签: typescript

我面临以下问题,我不知道如何处理它。我想将属性名称分配给另一个对象的字符串属性。但是不确定在这种情况下如何使用密钥。

我设法使用"验证"函数,只是为了有编译错误,但我想跳过声明一个什么都不做的函数。有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

类型断言可以让你做编译器认为无效的事情。只需明确声明const的类型:

interface IGame { id: number}
const incalidColumn: keyof IGame = 'invalild' // error
const validColumn: keyof IGame = 'id' 

答案 1 :(得分:1)

可以使用与this answer中相同的方法,以便将类型检查与JS输出隔离开来:

type CheckGameProp<T extends keyof IGame> = T;

const invalidColumn = "invalidColumn";
{ type _checkGameProp = CheckGameProp<typeof invalidColumn>; }

const validColumn = "id";
{ type _checkGameIdProp = CheckGameProp<typeof validColumn>; }

_checkGameIdProp虚拟类型可以作用域,以避免类型名称选择出现问题。

根据invalidColumnvalidColumn的使用方式,最好检查它们的使用位置。