在Typescript中获取元组的确定类型而不是组合类型

在Typescript中获取元组的确定类型而不是组合类型,typescript,typescript-typings,Typescript,Typescript Typings,我有以下示例代码: const person={ 名称:“abc”, 年龄:123, 伊舍尔:是的 }; const getPersonValues=()=>{ 返回[person.name,person.age,person.isHere]; }; const[name]=getPersonValues();//“名称”的类型为字符串|数字|布尔值 name的类型在这里显示为string | number | boolean,但我希望它是一个字符串。有没有一种方法可以做到这一点,而不必在ge

我有以下示例代码:

const person={
名称:“abc”,
年龄:123,
伊舍尔:是的
};
const getPersonValues=()=>{
返回[person.name,person.age,person.isHere];
};
const[name]=getPersonValues();//“名称”的类型为字符串|数字|布尔值

name的类型在这里显示为
string | number | boolean
,但我希望它是一个字符串。有没有一种方法可以做到这一点,而不必在
getPersonValues
中显式声明特定类型?

没有,这是不可能的

在本例中,TypeScript在数组中查看可能的类型,并将其作为
array
返回

你需要更具体一些

const getPersonValues = () => {
    return [person.name, person.age, person.isHere] as [string, number, boolean];
};

另一种选择是作为对象返回:

const person={
名称:“abc”,
年龄:123,
伊舍尔:是的
};
const getPersonValues=()=>{
返回人;
};
常量{name,isHere}=getPersonValues();//名称为“字符串”类型,isHere为“布尔”类型

您可以使用
as const
强制数组具有元组类型。这也使得类型
成为只读的
,但是如果只是使用它来分解返回值,那么这就没有问题了

const getPersonValues = () => {
  return [person.name, person.age, person.isHere] as const;
};

不需要类型断言;只需注释返回类型,如
():[string,number,boolean]=>{return…;}
这没什么关系。谁喜欢谁