我正在使用fingerprintjs2
库,该库在definitelyTyped中的声明不完整且不兼容
我选择在我的项目中编写自己的声明,而我正在努力将该声明加载到代码中。我仍然遇到错误
找不到模块'fingerprintjs2'
在此导入语句中
import Fingerprint2, { TCallback, TComponent } from 'fingerprintjs2';
我的声明被编写为隔离模块
// ./src/@types/fingerprintjs2/index.d.ts
// ...some other exported types
export type TComponent = {
key: string;
value: string | number | boolean | string[];
};
export type TCallback = (components: TComponent[]) => void;
export default interface fingerprintjs2 {
get(callback: TCallback): void;
get(options: TOptions, callback: TCallback): void;
getPromise(options: TOptions): Promise<TComponent[]>;
}
我的 tsconfig.json
{
"include": ["src/**/*"],
"exclude": ["node_modules"],
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"declaration": true,
"declarationDir": "./dist",
"lib": ["dom", "es5", "scripthost"],
"module": "es6",
"noImplicitAny": true,
"outDir": "./dist",
"paths": { "*": ["./src/@types*"] },
"target": "es5"
}
}
我没有找到明确的解释。你能给我个建议吗?感谢您的帮助。
我正在Webstorm 2018.2中使用Typescript 3.1.6
答案 0 :(得分:0)
您需要设置typeRoots,以便它将拾取您的自定义类型文件夹。
来源:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
类似的东西应该起作用:
"typeRoots": [
"node_modules/@types",
"src/@types"
]
答案 1 :(得分:0)
问题在于解决模块,我更改了 tscongif.json 编译器选项
++ "moduleResolution": "node",
-- "paths": { "*": ["./src/@types*"] },
++ "paths": { "*": ["./node_modules/*", "./src/@types/*"] },
然后解决了该模块。
我有一个错误,该模块仅输出类型,这是真的,我已经导出了interface
。我必须首先实现该接口,然后导出实现的值。像这样
// declare const value with interface
declare const fingeprint: fingerprintjs2;
// export that const value
export default fingeprint;
现在看来可行。