快速修补 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