Javascript 指定流中ES6非结构化参数的类型
在ES6中,可以使用命名参数,例如Javascript 指定流中ES6非结构化参数的类型,javascript,ecmascript-6,eslint,flowtype,destructuring,Javascript,Ecmascript 6,Eslint,Flowtype,Destructuring,在ES6中,可以使用命名参数,例如 // @flow const makeRequest = (dateFrom: Object, dateTo: Object, subdomain: string, {shortId, label} = {}) => { let request = {} try { dateValidation(dateFrom, dateTo) subdomainValidation(subdomain) request.subdom
// @flow
const makeRequest = (dateFrom: Object, dateTo: Object, subdomain: string, {shortId, label} = {}) => {
let request = {}
try {
dateValidation(dateFrom, dateTo)
subdomainValidation(subdomain)
request.subdomain = subdomain
request.dateFrom = dateFrom.format('YYYY-MM-DD')
request.dateTo = dateTo.format('YYYY-MM-DD')
if (shortId) {
request.shortId = shortId
}
if (label) {
request.label = label
}
} catch (error) {
throw error
}
return request
}
参考:
它是我代码的一部分,正如您所看到的,我使用了{shortId,label}={}
作为参数,这意味着我希望参数名为shortId
,label
,但它是可选的!('原因由{}初始化)
关键是,我想使用Flow作为静态类型检查器,就像我在dateFrom:Object
中所做的那样。但是如果我这样做,{shortId,label}:Object={}
,ESLint会说解析错误:binding rvalue
那么,如何一次使用Flow、ES6命名参数?“在ES6中,您可以使用命名参数”-JS始终支持命名函数参数。您询问的是默认参数值。OP是通过分解结构引用命名参数,这是一项新功能,我认为在使用默认参数时不需要指定数据类型。类型是默认值的类型。这有一个未解决的问题:。我想现在最好的解决办法是让埃斯林特快乐而沉默。。。