gpt4 book ai didi

typescript - 发布 TypeScript 包时如何处理可选的对等依赖项?

转载 作者:行者123 更新时间:2023-12-03 16:56:10 24 4
gpt4 key购买 nike

将 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。或 optionalDependency了。您可能更愿意将其保留为 peerDependency因此,如果您的用户将拥有这些依赖项,他们将使用与您的库兼容的版本。自然地,添加为 devDependency也很有用。
导入将基于生成的 d.ts仅文件,但不在 .js 上转译的代码。但是,一个问题是,如果用户没有安装该库,则该类型将变为 any。这可能会使您自己的打字有点困惑。例如,如果 foo没有安装你的功能变成
customPackage = (source: any | ExternalBar) =>
// equivalent to customPackage = (source: any) =>
对于这种特殊类型的注释,它很烂,因为即使我有 bar已安装,它将不会用于该类型检查。所以有一种方法可以不再依赖那个库,但是它并没有解决 的困难。编写类型注释,如果该类型不存在就不会崩溃 .
编辑:请查看 this answer关于如何处理缺失类型。
Reference

关于typescript - 发布 TypeScript 包时如何处理可选的对等依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com