Typescript:设置响应时发生析构函数类型错误



我在析构函数和类型方面遇到问题。我有一个自定义类型和一个返回该类型的函数:

interface CustomNameInfo {
name: string;
access: string
}

async getNameInfo(): Promise<CustomNameInfo> {
//logic
return {
name: "FOO",
access: "none"
}
}

如果我使用方法1,我不会得到类型错误:

let name, access, resp;         
if (!hasName) {
resp = await this.getNameInfo();
access = resp.access;
name = resp.name;
}

如果我使用我试图使用的方法,尽管有析构函数,我会得到TS错误:Property 'access' and名称does not exist on type自定义名称信息``

let name, access;         
if (!hasName) {
({ name, access } = await this.getNameInfo()); 
}

不确定,您做错了什么,但这个Stacklitz示例可以按预期工作:

interface CustomNameInfo {
nameVar: string;
access: string
}
async function getNameInfo(): Promise<CustomNameInfo> {
return {
nameVar: "FOO",
access: "none"
}
}
let nameVar: any, access: any;
async function foo() {
if (true) {
({ nameVar, access } = await getNameInfo());
}
console.log(nameVar, access )
}
foo();

BTW:不要使用name作为顶级变量:https://stackoverflow.com/a/65379845/1041641

最新更新