gpt4 book ai didi

javascript - Flowtype:扩展Array类型参数

转载 作者:行者123 更新时间:2023-11-28 17:51:11 24 4
gpt4 key购买 nike

首先,如果我的措辞不正确,请原谅我,我不太熟悉所有的打字术语。

我有两种类型:AB,其中 BA 的扩展,如下所示:

type A = { a: string };
type B = { a: string, b: string };

断言 B 类型的值符合 A 类型可以正常工作:

const bar: B = { a: 'hello', b: 'world' };
(bar: A); // No problemo

但是当将值包装到数组中时,断言就会出错:

const bars: Array<B> = [bar]; // This is fine
(bars: Array<B>); // Also fine
(bars: Array<A>); // Breaks!!

我完全误解了什么吗?这是泛型问题、数组问题还是 Flow 中的一个错误?

流程版本:v0.52.0

亲自查看Flow

最佳答案

那是因为类型参数TArray<T>是不变的——这意味着在考虑子类型关系时它不接受父类(super class)型或子类型。请查看此处有关方差的文档以获取更多信息:https://flow.org/en/docs/lang/variance/#toc-invariance

您正在寻找的是具有协变类型参数的数据结构。具体来说,您可能需要使用 $ReadOnlyArray<T>相反。

Try it

关于javascript - Flowtype:扩展Array类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483050/

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