gpt4 book ai didi

typescript - 如何强制对函数返回值进行 TypeScript 额外属性检查

转载 作者:行者123 更新时间:2023-12-05 06:13:35 25 4
gpt4 key购买 nike

下面c:3应该是类型错误,其实不是。如何实现?

export type ExcludeUndefined<T> = T extends undefined ? never : T

export type GetRequiredKeys<T> = { [K in keyof T]: undefined extends T[K] ? never : K }[keyof T]

export type KeepRequiredKeys<t> = {
[k in ExcludeUndefined<GetRequiredKeys<t>>]-?: undefined extends t[k] ? never : t[k]
}

const ok: KeepRequiredKeys<{
b: 1
c?: number | undefined
}> = { b: 1, c: 3 } // this type errors as expected

const bad: () => KeepRequiredKeys<{
b: 1
c?: number | undefined
}> = () => ({ b: 1, c: 3 }) // c: 3 should be type error, is not

Playground link

最佳答案

你很幸运。相关问题来自 6 年前 (!),但上周刚刚解决。 This PR改善“扩大”行为。看看the code in your original question ,通过更新的编译器运行——您标记为“应该是错误”的最后一行现在被正确标记为错误。

听起来他们想在 v4.1 中发布 PR,但我不一定要让团队这么做。

关于typescript - 如何强制对函数返回值进行 TypeScript 额外属性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63258306/

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