gpt4 book ai didi

typescript - 文字类型推断 - Typescript

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:33 24 4
gpt4 key购买 nike

考虑这个定义:

interface Domain<Model, Name extends string> {
name: Name;
edit(cb: (m: Model) => Model): Domain<Model, Name>;
}

declare function createDomain<
M extends { [key: string]: any } = {},
N extends string = string
>(name: N): Domain<M, N>;

IDE可以给你正确的检查(如图): enter image description here这是因为 typescript 能够推断出 'foo' 作为 extends N /* string */ 的文字类型.

但是

如果我为通用 M 提供签名, 然后 typescript 丢失了关于 'foo' 的信息并返回一个通用的 string . enter image description here

如何更改上述定义以保留有关 N 的信息?

最佳答案

我看到了这些选项:

提供第二种

let domain = createDomain<Todo, "foo">("foo");

建立工厂

function funcCreateDomain<M>() {
return <N extends string>(name: N) => createDomain<M, N>(name);
}

let factory = funcCreateDomain<Todo>();
let domain = factory("foo");

关于typescript - 文字类型推断 - Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com