gpt4 book ai didi

javascript - Typescript 通用类型保护

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

我的变量可以是 C1[] 类型之一或C2<C1>[]如何为变量创建类型保护?

interface C<T>{
key: string;
secret: T;
}

private isC(d: Foo[] | C<Foo>): d is C<Foo>[] {
return (<C<Foo>>)d[0].key !== undefined
}

方法isC未编译。

最佳答案

这里有多个问题:

  1. isC功能需求Foo作为类型参数。这意味着它需要这样声明:

    private isC<Foo>(...
  2. isC的返回类型定义与其输入参数不匹配。返回类型声明 isC返回true ,当其参数 d类型为C<Foo>[] ,但输入类型限制为Foo[]C<Foo> (它们都不是 C<Foo>[] )。

    此声明应该有效:

    private isC<Foo>(d: Foo[] | C<Foo>[]): d is C<Foo>[] { ...
  3. (<C<Foo>>)d[0]不是有效的类型转换。试试这个:

    return (d as C<Foo>[])[0].key !== undefined

另请参阅此 playground with compiling example .

关于javascript - Typescript 通用类型保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996658/

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