在一个函数/方法上使用'strictNullChecks'注释



我有这个方法:

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

相关内容

最新更新