在打字稿中,泛型函数可以返回扩展的泛型类型吗?

时间:2021-07-29 09:37:53

标签: typescript-typings typescript-generics

我试图向 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"}
Has type checking, auto complete, and is generic. But too clumsy

问题是当我试图缩短它时,类型就会消失。

export function checkType<T>(input) {
  return (generateTypeCheck<T>()(input))
}
Lost type checking and autocompletion when shorten

是否可以像最后一段代码那样做一些事情,但保留类型和自动完成?

0 个答案:

没有答案