javascript - Typescript 声明的静态类方法不是函数
问题描述
我为我的一些项目创建了一个 es6 库。
当我导入这个库时,所有静态函数都会引发错误。
这是一个例子。
我的班级(es6):
class JsonSerializer {
static toJson(node) { /* some code */ }
}
export default JsonSerializer
打字稿定义文件:
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*/
}
解决方案
我猜这个类的文件被称为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(...)
推荐阅读
- facebook-graph-api - 对于 v3.3 及更高版本,不推荐使用 Facebook Graph API 名称字段
- owin-middleware - 身份验证后重定向的最佳方式 - .Net 4.8 Web 表单
- nginx - next.js 应用程序 nginx 未加载 css 和 js。指定端口(3000)时完美运行
- elixir - 即使使用 Macro.escape,Unquoute 也不适用于地图
- node.js - Next.JS 和 Mongoose 模型
- python - 有没有办法将参数从主 bot.py 文件中的命令传递到 cog discord.py
- html - 图像未在 HTML 中显示
- scala - Databricks Upsert Spark Dataframe 无法检测到 ES 版本错误
- github - 在 sourcetree 中设置自定义 ssh 密钥
- docker - 警告:无法从文件“logs.jsonl”中读取数据,这会导致 POST 为空