javascript - Typescript 声明的静态类方法不是一个函数
我为我的一些项目创建了一个 ES6 库。
当我导入这个库时,所有静态函数都会报错。
这是一个例子。
我的类 (es6) :
class JsonSerializer {
static toJson(node) { /* some code */ }
}
export default JsonSerializer
TypeScript 定义文件:
export class JsonSerializer {
static toJson(root: Node): any
static fromJson(config: any): Node
}
我像这样导入我的类
import {JsonSerializer} from 'ls-serializer'
当我尝试使用 toJson 静态方法时。
并且它给了我以下错误:
_lsSerializer.JsonSerializer.toJson is not a function
我对所有静态方法都有相同的错误。
我错过什么了吗?
编辑
这是我的库的 webpack 配置:
const path = require('path');
module.exports = {
entry : {
serializer : './src/serializer.js'
},
output : {
path : path.resolve(__dirname, 'dist'),
filename : '[name].bundle.js',
libraryTarget: 'commonjs-module'
},
resolve : {
extensions : ['.js', '.jsx'],
alias : {
'@' : path.resolve(__dirname, 'src'),
'~' : path.resolve(__dirname, 'examples')
}
},
devServer : {
contentBase : path.resolve(__dirname, 'dist'),
compress : true,
port : 9000
},
module : {
rules : [{
test : /\.(js|jsx)$/,
exclude : /node_modules/,
loader : 'babel-loader'
}, {
test : /\.(html)$/,
use : {
loader : 'html-loader',
options : {
attrs : [':data-src']
}
}
}]
},
devtool : 'source-map',
mode : 'development'
};
这是./src/serializer.js文件的代码:
import JsonSerializer from './serializers/JsonSerializer'
export {
JsonSerializer, /* other exports*/
}
答案#1
我猜这个包含类的文件叫做 ls-serializer.ts。
你必须这样使用它:
import JsonSerializer from './ls-serializer'
JsonSerializer.toJson(...)
或者你可以避免使用 default:
// ls-serializer.ts
export class JsonSerializer {
static toJson(node) { /* some code */ }
}
并像这样导出类:
import {JsonSerializer} from './ls-serializer'
JsonSerializer.toJson(...)
答案#2
我发现了问题,有点可怜...
在我的代码中,toJson 方法被命名为 toJSON,其中包含大写部分……并且在我的 TypeScript 声明文件中使用了驼峰命名法。
