TypeScript 5.0版本带来了对我们使用JavaScript/jsdoc的我们的大量新闻。
这次我们获得了两个全新的关键字,@satisfies
和@overload
,这是迈向与打字稿本身的特征奇偶校验的重要一步。
最重要的是,我们还得到了其他一些好东西,我将在本文的结尾进行。
satisfies
-非损害类型验证
当我们有一块data
时,我们要确保是类型Foo
的data
,我们会做:
/** @type {Foo} */
const abc = data;
如果Foo
具有.type
的属性.type
,那么我们将不知道两个abc
中的哪个都会有,无论我们知道data.type
是data.type
是bike
。
我们现在可以写:
/** @satisfies {Foo} */
const abc = data;
这将确保我们只是确保abc
满足Foo
的类型,它不会使我们失去data
的任何细节。
有关更多信息,请查看the announcement post at the TypeScript blog。
@overload
启用功能在JS中超载
打字稿博客上的公告帖子总结了一个很好:
每个带有
@overload
标签的jsdoc评论被视为以下功能声明的独特过载。
换句话说,我们现在可以轻松地指定何时。第二个参数可以或不能指定为函数。
这是很长一段时间以来在TS中可能存在的事情,现在我们也可以在JS中做到这一点。非常适合几次可以使代码更可读的时间。
有关更多信息,请查看the announcement post at the TypeScript blog。
其他值得注意的消息
新的koude16非常适合当我们需要在导入时指定文件扩展名(我在看您的ESM),并且您需要导入.d.ts
文件(这是有用的东西,这是有用的东西,或者很难写下您的JSDOC中的类型)。仅在启用--noEmit
或--emitDeclarationOnly
时允许,这对于所有JS项目都是如此。
另外:对multiple files in koude20的支持可能会有所帮助,尤其是在与TS项目共享共同配置时。
结论
我爱上了@satisfies
,并且会充分使用它。我可能还会将--allowImportingTsExtensions
添加到我共享的koude23配置的未来版本中,可能最终会重组一点以启用多个extends
。
前往voxpelli/types-in-js,并了解有关使用JS类型的更多信息,并分享your favorite additions1111