gpt4 book ai didi

inheritance - 流 : types inheritance

转载 作者:行者123 更新时间:2023-12-04 03:10:42 28 4
gpt4 key购买 nike

我正在为我的项目测试 FlowJS,我遇到了 Type Aliases 的问题.

我为 API 构建了一个 Web SDK:我有一个使用此方法的 Helper 类:

class Helper {
find(filters:PaginationOptions = {}) {
// ...
}
}

PaginationOptions 是一个基本的 FlowJS 类型:

type PaginationOptions = {
start?:string,
end?:number,
};

我还有一个 Users 的帮助程序,它继承自 Helper:

class UsersHelper extends Helper {
find(filters:UsersFilterOptions = {}) {
// ...
}
}

UsersFilterOptions 是一个 FlowJS 类型“扩展”PaginationOptions:

type UsersFilterOptions = {
username?:string,
city?:string,
} & PaginationOptions;

我在这里使用 Intersection这样我的用户过滤器也应该接受 startend 属性。

似乎我的 IDE (PHPStorm) 不喜欢我的 UsersHelper 类中的 find() 方法,它一直告诉我:

Incompatible override, should have type 'PaginationOptions'

嗯...我知道,这就是为什么 UsersFilterOptionsPaginationOptions 有交集。

但是 FlowJS 还向我显示了另外两个警告:

Flow: property username. Property not found in object literal
Flow: property city. Property not found in object literal

我不明白为什么会出现这些错误:这些属性被定义为可选...

对于修复这三个错误,您有什么建议吗?

提前致谢!

最佳答案

当你覆盖一个方法时,它的参数应该是基类中相应参数的父类(super class)型,所以你可以这样做:

class A {
test(x: number) {
}
}

class B extends A {
test(x: number | string) {
}
}

但是你不能这样做:

class A {
test(x: number | string) {
}
}

class B extends A {
test(x: number) {
}
}

关于inheritance - 流 : types inheritance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805526/

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