文字类型推断 - 打字稿

问题描述 投票:2回答:1

考虑这个定义:

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这是因为打字稿能够将'foo'推断为extends N /* string */的文字类型。

but

如果我为通用qazxsw poi提供签名,那么打字稿会丢失有关qazxsw poi的信息并返回一个通用的M'foo'

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

typescript types typescript-typings typescript2.0 dynamic-typing
1个回答
1
投票

我看到这些选项:

提供第二种类型

enter image description here

建一个工厂

N
© www.soinside.com 2019 - 2024. All rights reserved.