我尝试从返回对象数组的Promise的方法定义返回:
public readAll( ) : Promise<any[]> {
this.handler.getObject( {
Bucket : this.bucket,
Key : this.tableName + '.json',
ResponseContentType : 'text/plain'
} )
.promise( )
.then( file => {
const data : any[] = this._parseData( file.Body.toString( ) );
return new Promise( ( resolve ) => data );
} )
.catch( error => {
return this.writeAll( );
} );
}
然而,我正面临错误&#34; [ts]一个声明类型既不是&#39;无效的函数。也没有任何&#39;必须返回一个值。&#34;
我做错了什么?
答案 0 :(得分:4)
正如错误所述,您的函数readAll期望返回类型 Promise<any[]>
尝试在 readAll
public readAll() : Promise < any[] > {
return this.handler.getObject({
Bucket: this.bucket,
Key: this.tableName + '.json',
ResponseContentType: 'text/plain'
})
.promise()
.then(file => {
const data: any[] = this._parseData(file.Body.toString());
return data;
})
.catch(error => {
return this.writeAll();
});
}
答案 1 :(得分:0)
Andrii Nikolaienko的建议导致了一个有效的解决方案:
protected readAll( ) : Promise<any[ ]> {
return new Promise( resolve => {
this.handler.getObject( {
Bucket : this.bucket,
Key : this.tableName + '.json',
ResponseContentType : 'text/plain'
} )
.promise( )
.then( file => {
const data : any[] = this._parseData( file.Body.toString( ) );
resolve( data );
} )
.catch( error => {
resolve( this.writeAll( [ ] ) );
} )
} );
}
感谢您的建议。