我面临以下问题,我不知道如何处理它。我想将属性名称分配给另一个对象的字符串属性。但是不确定在这种情况下如何使用密钥。
我设法使用"验证"函数,只是为了有编译错误,但我想跳过声明一个什么都不做的函数。有什么想法吗?
答案 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
虚拟类型可以作用域,以避免类型名称选择出现问题。
根据invalidColumn
和validColumn
的使用方式,最好检查它们的使用位置。