在封装npm包时希望为其书写ts声明文件,以起到代码提示的功效,但在引入包之后却引起了ts报错:
“myLib”仅表示类型,但在此处却作为值使用。ts(2693)
示例代码如下
// package.json
{
"main": "lib/index.js",
"typings": "lib/index.d.ts"
}
//lib/index.js
module.exports = require('./core.js');
// lib/index.d.ts
export default interface MyLib {}
// project/main.ts
// 项目内应用
import myLib from 'myLib';
myLib(); // “myLib”仅表示类型,但在此处却作为值使用。ts(2693)
原因在于index.d.ts
的默认导出应与index.js
保持一致,当前的写法认为index.js
导出了一个interface(接口),自然会提示类型不能当做值使用,改为以下写法即可解决问题:
// lib/index.d.ts
export interface MyLib {}
declare const myLib: MyLib;
export default myLib;
网友评论