如何在打字稿中强制variables的types?
我试图写一些函数,将mongooseUser
模型转换为一个带有项目符号的string:
// Simplified version so you get the idea interface IUser { name: string } function userDetails (user: IUser, keys: string[]): string { return keys.map((k: string): string => { return `- ${k} : ${user[k]}` }) .join('\n') }
但是我有一个奇怪的编译器错误, user[k]
下划线:
对象types的索引签名隐式地具有“任何”types。
有没有办法“强制”打字机pipe理该user[k]
是一个string? 我尝试user[k] as string
或<string> user[k]
没有成功。
另外,如果我从返回的string中删除${user[k]}
,那么编译器会停止抱怨
从编译器的错误公寓,一切工作在运行时。
谢谢 !
尝试这个:
function userDetails(user: IUser, keys: string[]): string { let dic: { [prop: string]: string } = <any>user return keys.map((k: string): string => { return `- ${k} : ${dic[k]}` }) .join('\n') }