2017-02-14 59 views
0

当我编译下面的代码(因为const的类型和功能()的类型是不同的这对我来说似乎是不正确的)没有错误的产生:如何指定打字稿函数参数数组类型

export const yearsExtractor: (Period) => Year[] = (periods: Period[]): Year[] => periods && periods.length ? periods.map((period: Period) => period.year) : <Year[]>[]; 

当我编译下面的代码产生一个错误(因为const的类型和功能()匹配的类型这对我似乎是正确的):

export const yearsExtractor: (Period[]) => Year[] = (periods: Period[]): Year[] => periods && periods.length ? periods.map((period: Period) => period.year) : <Year[]>[]; 

的区别在于不编译的代码将const声明为接受Period对象数组(而不是单个Period对象)的函数。

错误

(Period[]) =>

在一审中没有错误

(Period) =>

+1

你总是有最佳的类型标注前一个强制性的名字。因此,Period是该位置的参数名称,[]在该位置无效...... – Lucero

回答

1

(Period) => Year[] 

读取的功能,具有参数Period:any,二审:

(Period[]) => Year[]... 

是无效的语法,因为你没有给一个名称函数变量(需要)所。

尝试(period: Period[]) => Year[]...

export const yearsExtractor: (period: Period[]) => Year[] = (periods: Period[]): Year[] => periods && periods.length ? periods.map((period: Period) => period.year) : <Year[]>[];