如何阻止Typescript让调用者为参数传递“ any”?

时间:2019-11-14 03:01:27

标签: typescript

我正在谈论的简化代码示例:

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”?

0 个答案:

没有答案