typescript 对象:如何将键限制为特定的字符串?

osh3o9ms  于 2023-02-05  发布在  TypeScript
关注(0)|答案(2)|浏览(184)

我想创建一个类型为Partial的对象,其中键是“a”、“b”或“c”的某种组合。但它至少有一个)。如何在Typescript中强制执行此操作?以下是更多详细信息:

// I have this:
type Keys = 'a' | 'b' | 'c'

// What i want to compile:
let partial: Partial = {'a': true}
let anotherPartial: Partial = {'b': true, 'c': false}

// This requires every key:
type Partial = {
  [key in Keys]: boolean;
}

// This throws Typescript errors, says keys must be strings:
interface Partial = {
  [key: Keys]: boolean;
}

我在上面尝试过的两种方法(使用Map类型和接口)没有达到我想要的效果。有人能帮忙吗?

8ulbf1ek

8ulbf1ek1#

您可以使用?使密钥成为可选的,因此

interface Partial {
   a?: boolean;
   b?: boolean;
   c?: boolean;
}

或者,您可以执行以下操作:

type Keys = "a" | "b" | "c";

type Test = {
    [K in Keys]?: boolean
}
fdbelqdn

fdbelqdn2#

另一种方法是...

// I have these keys
type Keys = 'a' | 'b' | 'c'

// This type requires every key:
type WithAllKeys = {
  [key in Keys]: boolean;
}

// This will have a Partial key
interface WithPartialKeys: Partial<WithAllKeys>;

相关问题