【发布时间】:2019-04-29 11:00:24
【问题描述】:
为什么 typescript ES6 没有检测到对象不是函数?
find: (collection: string, query: object, sortQuery = {}, cb?: Function) => {
socketManager.call('find', collection, query, sortQuery, cb);
}
根据这个函数,你会认为这会失败:
this._services._socket.methods.find('vendors', {type: 'repair'}, (errVen, resVen) => {}
因为没有 sortQuery 对象而是一个回调函数。这没有给我任何类型的错误,这意味着打字稿允许回调作为对象类型。
如何确保这会导致错误?
【问题讨论】:
-
它是否真的将
sortQuery推断为对象类型?还是有? -
这里也是一样,可能是因为函数是 JavaScript 中的对象:typescriptlang.org/play/…
-
与此结果相同:find: (collection: string, query: object, sortQuery: object, cb?: Function) => { socketManager.call('find', collection, query, sortQuery, cb); }
-
有什么方法可以确保“函数”类型而不是对象?
-
你知道
sortQuery的参数和返回类型吗?你可以更具体地定义它
标签: javascript typescript