gpt4 book ai didi

javascript - 有人可以解释一下为什么更具体的输入是不好的吗?

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

Flow's documentation states :

给定一个类:

class BaseClass {
method(value: City): City { ... }
}

还有一个子类:

class SubClass extends BaseClass {
method(value: SanFrancisco): City { ... } // ERROR!!
}

This is an error in Flow because if you are expecting a SanFrancisco and you get a City you could be using something that only exists on SanFrancisco which would cause an error at runtime.

如果我调用 SubClass#method,类型检查器不会强制我提供 SanFrancisco 吗?为什么 Flow 会出错?

最佳答案

假设SeattleSanFrancisco都直接扩展City,即

class City { location: [number, number]; }
class Seattle extends City { raining: bool; }
class SanFrancisco extends City { foggy: bool; }

BaseClass.prototype.method 将接受 CitySeattleSanFrancisco 的实例,并可能使用location,您的 SubClass.prototype.method 可以免费使用 foggy,即使 Seattle 缺少该属性。这意味着 SubClass.prototype.method 通常不能替代 BaseClass.prototype.method

参见https://en.wikipedia.org/wiki/Subtyping#Function_types .

关于javascript - 有人可以解释一下为什么更具体的输入是不好的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44231652/

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