【发布时间】:2020-08-29 16:23:13
【问题描述】:
有人可以解释一下为什么这会在 Typescript 中编译吗?
class Result<T> {
object: T | null = null;
}
function setOnlyA(res: Result<{ a: number }>) {
res.object = { a: 5 };
}
function setAB(res: Result<{ a: number; b: string }>) {
setOnlyA(res);
// everything compiles fine, but res object is invalid
// at this point according to type definitions
}
我希望在setAB 中不允许调用setOnlyA。我开启了strict 模式。我需要其他设置吗?
【问题讨论】:
-
正如提香所说,这是一种选择,它会产生类型问题,同时让一些事情变得更方便。有趣的是,Swift 做出了相反的选择,并避免了这些问题(虽然不太方便),一个非常常见的问题是“为什么不能在 Swift 中编译?” stackoverflow.com/questions/30487258/swift-generics-upcasting/…
标签: typescript generics