繁体   English   中英

在typescript中,泛型function可以返回扩展泛型吗?

[英]In typescript, can a generic function return an extended generic type?

我试图将类型检查添加到 const object 并保持自动完成。

第一次尝试是const foo:{[key:string]:string} = {bar:"foobar"}

哪个确实检查类型,但结果类型不支持自动完成。 来自 VS Code 的屏幕截图

然后我遇到了这个问题提供的答案: Why autocomplete stop working in an object with type in TypeScript?

它使用 function 返回具有原始类型的原始参数。 它工作得很好,但不是很通用。

 export function asCSS<T extends { [key: string]: CSSProperties }>(arg: T): T { return arg }

然后我尝试通过使用返回 function 的 function 使其通用。

 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)) }
缩短时丢失类型检查和自动完成

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

您不需要使用两个函数,只需使用两个通用参数:

function asPropType<T, R extends { [key: string]: T }>(arg: R): R {
    return arg
}

const foo = asPropType({ bar:"foobar" });
foo.bar;

游乐场链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM