gpt4 book ai didi

javascript - 检查常量类型而不加宽类型?

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

有没有办法在不扩大类型的情况下对分配给变量的值进行类型检查?
例如,

const a = {foo: "hi"} as const; // typeof = {foo: "hi"}

type THasFoo = {foo: string};
const b: THasFoo = {foo: "hi"} as const; // typeof = THasFoo
我想检查我分配给 a 的任何内容有成员(member) foo ,但不会丢失该值的类型信息。

注意:特别是我对来自直接分配的检查感兴趣。例如。
const a = {foo: "hi", bar: "world"} as const;

type THasFoo = {foo: string};
const b: THasFoo = a;
通过。然而,
type THasFoo = {foo: string};
const b: THasFoo = {foo: "hi", bar: "world"} as const;
才不是。这是我希望拥有的后一种检查形式(但不会扩大)。

最佳答案

序言:我在 TypeScript 中没有黑带,所以我的答案可能不是最理想的(甚至更糟)

const b = (<T extends THasFoo>(v: T) => v)(a);
因此,它创建了一个匿名函数并立即调用它。如果不是 a传递文字的变量 - 它将遵循相同的可分配性规则(例如:文字必须具有完全相同的属性),就好像它是直接分配一样。
缺点:它会产生一个不必要的函数调用,但现代引擎可能会内联或完全消除它。

关于javascript - 检查常量类型而不加宽类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64580350/

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