快速修补 TypeScript generateCertificate 接口参数类型

我正计划将项目 Areditors 停止开发并归档,后续用 TypeScript 开发 Ateditors 将其进行替代。

在 Areditors 中有一个使用 WebRTC 在不同运行实例间同步数据的功能原型(暂时仅能进行简单消息通信,文件传输、数据同步功能并未实现)。代码中使用 RTCPeerConnection.generateCertificate 手动生成了 X.509 证书用于进行 DTLS 连接。我使用的算法是 ECDSA ,这个算法需要一个附加的 namedCurve 字段。

VSCodium 编辑器一直报 AlgorithmIdentifier 参数不匹配,自然在构建发布版代码是 tsc -b 会报参数类型不匹配的错误,无法正常构建软件。类型 AlgorithmIdentifier 的定义如下:

type AlgorithmIdentifier = Algorithm | string;

其中 Algorithm 仅有一个字段:

interface Algorithm {
    name: string;
}

查找相应扩展的代码文件,最匹配的接口如下:

interface EcKeyGenParams extends Algorithm {
    namedCurve: NamedCurve;
}

所以我修补了 VSCodium 的 TypeScript 扩展定义文件 (/Applications/VSCodium.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.dom.d.ts) 如下:

type AlgorithmIdentifier = Algorithm | EcKeyGenParams | string;

然后代码编辑器中的警告与错误信息就被清除掉了。

非常幸运,我的修补代码成功了。后续我会尝试给 TypeScript 扩展的开发者提交一个 bug,期望也许对大家能有点用处 😊

9

Top articles