将 TypeScript 包发布到 npm 并提供接受来自一个对等依赖项或另一个对等依赖项的输入的函数时,如何定义可选的对等依赖项?
import { ExternalFoo } from 'foo';
import { ExternalBar } from 'bar';
export const customPackage = (source: ExternalFoo | ExternalBar) => {
/* ... */
}
当两个选项之一缺失时,如何防止使用我的包的人出现错误?
从 Typescript 3.8 开始,您可以使用以下语法:
import type { ExternalFoo } from "foo";
因此,如果您只是使用该库来获取类型信息,则可能不必将其列为dependency
or optionalDependency
不再了。您可能更愿意将其保留为peerDependency
这样,如果您的用户有这些依赖项,他们将使用与您的库兼容的版本。自然地,添加为devDependency
也很有用。
导入将存在于生成的d.ts
仅文件,但不.js
转译的代码。但有一个问题是,如果用户没有安装该库,该类型就会变成any
这可能会让你自己的打字有点混乱。例如,如果foo
没有安装你的功能变成
customPackage = (source: any | ExternalBar) =>
// equivalent to customPackage = (source: any) =>
对于这个特定的类型注释,它很糟糕,因为即使我有bar
安装后,它不会用于该类型检查。所以有is一种方式不依赖不再在那个图书馆了,但这并不能解决问题编写类型注释,即使该类型不存在,也不会崩溃.
编辑:请看一下这个答案 https://stackoverflow.com/a/70096366关于如何处理缺失类型。
参考 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)