我想在“cipher-collection”-node-module中添加打字,但它不起作用,我无法弄清楚如何做到这一点。我看了一下ressouces [1] [2] [3]并看看它是如何在RxJs中完成的,但我仍然无法使它适应这个模块。
cipher-collection 有一个src文件夹,例如base64.js位于:
node_modules/cipher-collection/src/base64.js:
import { isBrowser } from './helpers/index'
// Courtesy: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem
const decode = input => isBrowser ? decodeURIComponent(atob(input).split('').map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')) : atob(input)
const encode = input => isBrowser ? btoa(encodeURIComponent(input).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(`0x${p1}`))) : btoa(input)
const btoa = isBrowser ? window.btoa : i => Buffer.from(i).toString('base64')
const atob = isBrowser ? window.atob : i => Buffer.from(i, 'base64').toString()
export default {
decode,
encode
}
我尝试使用以下内容添加文件node_modules/cipher-collection/index.d.ts
:
export namespace CipherCollection {
export { base64 } from './src/base64';
}
的src /的 base64.d.ts :
export namespace base64 {
export function encode(obj: any): string;
export function decode(obj: string): any;
}
我认为我现在可以使用base64,例如:
import { base64 } from 'cipher-collection';
base64.encode("hello!");
或者像这样:
import { CipherCollection } from 'cipher-collection';
CipherCollection.base64.encode("hello!");
但是typescript找不到base64。我有什么想法可以实现这个目标吗?
[1] https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html
[2] https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html
[3] https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-function-d-ts.html