gpt4 book ai didi

typescript :函数声明中接口(interface)属性的类型安全

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:07 25 4
gpt4 key购买 nike

假设我们有这个简单的例子:

interface Steps {
stepOne?: boolean;
stepTwo?: boolean;
stepThree?: boolean;
}

let steps: Steps = {};

function markStepDone (step: ???) {
steps[step] = true;
}


markStepDone('anything');

我怎样才能阻止它允许将“任何东西”传递给这个函数并只允许 ['stepOne', 'stepTwo', 'stepThree']?

我也试过用枚举来做,但结果发现你不能用枚举作为索引签名...

最佳答案

您正在寻找的是 keyof 运算符,它将于本周实现(是的,真的)。一旦准备就绪,它将看起来像这样:

function markStepDone (step: keyof Steps) {
steps[step] = true;
}

这里有一个不同名称 (keysof) 的早期 PR:https://github.com/Microsoft/TypeScript/pull/10425

同时,string是一个粗略的近似,还是手写类型"stepOne"| “第二步” | “stepThree” 将为您提供 keyof Steps

的确切行为

关于 typescript :函数声明中接口(interface)属性的类型安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242998/

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