我有这个方法:
remove(node: SortedQueueNode<V, K>) : SortedQueueNode<V, K>{
// ...
return node.parent;
}
函数体中有多个返回语句,我想避免null/undefined返回语句。我能给这个方法添加注释吗,比如
// @ts-strictNullChecks
remove(node: SortedQueueNode<V, K>) : SortedQueueNode<V, K>{
// ...
return node.parent;
}
从TypeScript 4.9开始,--strictXXX
编译器选项都是启用或禁用的;不支持在更细粒度或模块化的级别上应用它们。
但是,在microsoft/TypeScript#49886中有一个每个文件编译器选项的实现,其中包括--strictNullChecks
在内的一些编译器选项可以为项目中的单个文件启用或禁用。到目前为止,它还没有被合并到主分支中,但它是TypeScript 5.0迭代计划的一部分,在microsoft/TypeScript#51362上,所以它很有可能会和TypeScript 5.0一起发布。除非它被释放,否则我认为你被困住了。
如果它被释放,它与函数作用域的编译器选项并不完全相同。但是,您可以通过重构代码来获得类似的效果,以便您希望以不同方式检查的部分位于不同的文件中,例如:
// someFile.ts
// @ts-strictNullChecks true
// -------------------> ^^^^ change to false to see error go away
Foo.prototype.remove = function <V, K>(node: SortedQueueNode<V, K>) { // error!
//~~~~~~~~~~~~~~~~~~ <-- undefined is not assignable to SortedQueueNode<V, K>
return node.parent;
}
//@ts-strictNullChecks true
编译器指令导致整个文件严格检查null
/undefined
相关错误,并且您的remove()
方法在此文件中与类的其余部分分开实现。
4.9.0-pr-49886-38
版本的TypeScript: Playground链接到code, 4.9.0-pr-49886-38