我想在Typescript GraphQL中使用解构。许多API函数使用data
作为第一级密钥。如何执行以下操作而不会出现Typescript / TSLint错误。更改为var
将导致它希望成为let
和Cannot redeclare block-scoped variable
的{{1}}。 block-scoped used before its declaration
当然是错误的。删除第二个const
不会使我破坏第二个let
。
data
我当前的解决方案是在let {data}:OverlayEventDetail = await modal.onDidDismiss();
if (data.save) {
if (shop) {
//update
} else {
const input: CreateShopInput = {
name: typeof data.name === 'string' && data.name.length > 0 ? data.name : null,
keywords: []
};
let {data}:{data:CreateBlahMutation} = await API.graphql(graphqlOperation(mutations.createShop, {input}));
}
}
行上同时使用const {data}
和// @ts-ignore
。
答案 0 :(得分:1)
您可以在不声明变量的情况下进行分配。不过,您将需要在语句周围添加括号:
({data} = await API.graphql(graphqlOperation(mutations.createShop, {input})));
答案 1 :(得分:1)
尽管您不能重用该名称,但仍可以在分配给另一个变量的同时进行重构:
let {data: apiData}: {data:CreateBlahMutation} = await API.graphql(graphqlOperation(mutations.createShop, {input}));
这会将data
的{{1}}属性分配给变量await API.graphql(...)
。