我在析构函数和类型方面遇到问题。我有一个自定义类型和一个返回该类型的函数:
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