我正在谈论的简化代码示例:
const err = returnTheError();
doTheThing(err); // <-- I want this to fail compilation
function doTheThing(param: number[]) {
// code that assumes param is a `number[]`
console.log("blah", param);
}
function returnTheError():any {
return Error("uh-oh");
}
假设我无法控制returnTheError
返回any
的事实-调用方将处理any
类型,对此我无能为力。
我想要一种方法来确保没有人用doTheThing
呼叫any
。如果他们必须做err as number[]
之类的事,那很好,但是目前在我的代码库中太容易了,以至于无意中将any
传递给依赖于编译器的方法来确保传递了正确的对象类型。
我有一个TS playground,上面的示例代码显示了所有“严格”选项,但仍在编译。
我可以对doTheThing
的定义进行一些更改,以使编译器告诉调用者他们没有检查err
是否实际上是正确的类型吗?可以这样说:“参数必须为 X 类型,并且不能为any
”?