1

有:视觉代码d.ts定义承诺的决心类型

// api.js 
export function getLayout(){ 
    return axios.get('/api/layout').then(res => res.data) 
} 
// api.d.ts 
declare interface JSONResponse { 
    meta: object, 
    data: Array<Field> 
} 
export declare function getLayout():Promise<any> // Promise<any>.then<JSONResponse>?? 

我想VSCode提出以下

getLayout().then(json => { 
    json.data // suggest data is of type Array<Fields> 
}) 

这可能吗?

回答

1

如果我理解正确,那么这将符合您的要求。

// api.d.ts 
declare interface JSONResponse { 
    meta: object, 
    data: Array<Fields> 
} 

export declare function getLayout(): Promise<JSONResponse> 

// client.ts 
var data = getLayout().then((json) => { 
    json.data; 
}); 

这里是打字稿操场建议的图像:

enter image description here

+0

我曾尝试在第一时间和我没有得到的建议。现在它工作正常。奇怪。 –

+1

它不工作,因为真正的getLayout(getLayout(name:string):Promise )预期的参数名称。 通过调用它没有名称intellisense没有正常工作(或如我所料) –