我有这个:
export class XMLParser extends Transform {
constructor(opts?: XMLParserOpts, to?: TransformOptions) {
super(Object.assign({}, to || {}, {objectMode: true}));
}
}
基本上我总是需要objectMode
才是真的。但是,如果用户为to
传递了一些奇怪的值,该怎么办?如何检查它以确保类型被定义为对象?
我可以让Transform类进行验证,但我宁愿手动执行此操作并提供自定义错误消息。但问题是,我不能这样做:
constructor(opts?: XMLParserOpts, to?: TransformOptions) {
if(to && typeof to !== 'object'){
throw new Error('no good bozo');
}
super(Object.assign({}, to || {}, {objectMode: true}));
}
怎么做我要找的东西? (如果super不是构造函数中的第一个调用,则TS不会编译。)
答案 0 :(得分:0)
我想最好的办法就是:
constructor(opts?: XMLParserOpts, to?: TransformOptions) {
super((function(){
if(to && typeof to !== 'object'){
throw new Error('no good bozo');
}
return Object.assign({}, to || {}, {objectMode: true})
})());
}
IIFE的用例确实不会弹出。