我试图向 const 对象添加类型检查并保持自动完成。
第一次尝试是
const foo:{[key:string]:string} = {bar:"foobar"}
哪个会检查类型,但结果类型不支持自动完成。 Screen cap from VS Code
然后我遇到了这个问题提供的答案: Why autocomplete stop working in an object with type in TypeScript?
它使用一个函数返回原始类型的原始参数。效果很好,但不是很通用。
export function asCSS<T extends { [key: string]: CSSProperties }>(arg: T): T {
return arg
}
然后我尝试的是通过使用返回函数的函数使其通用。
function generateTypeCheck<T>(){
return function asPropType<R extends { [key: string]: T }>(arg: R): R {
return arg
}
}
const foo = generateTypeCheck<string>()({bar:"foobar"}
问题是当我试图缩短它时,类型就会消失。
export function checkType<T>(input) {
return (generateTypeCheck<T>()(input))
}
是否可以像最后一段代码那样做一些事情,但保留类型和自动完成?