Typescript 类型脚本条件类型

Typescript 类型脚本条件类型,typescript,Typescript,我有一个例子需要在Typescript中使用条件类型。我不是100%确定用我的方法可以做到这一点,但我相信一定有办法 我在下面的例子中简化了我的代码 type Friend = { phoneNr: number; }; type Enemy = { howToAvoid: string[]; }; interface Names { edward: Friend; sam: Enemy; } const names: Names = { edwar

我有一个例子需要在Typescript中使用条件类型。我不是100%确定用我的方法可以做到这一点,但我相信一定有办法

我在下面的例子中简化了我的代码

type Friend = {
    phoneNr: number;
};

type Enemy = {
    howToAvoid: string[];
};

interface Names {
    edward: Friend;
    sam: Enemy;
}

const names: Names = {
    edward: {
        phoneNr: 1234,
    },
    sam: {
        howToAvoid: ["don't go there", "dont do that"],
    },
};

function select<T extends keyof typeof names>(arg: T): Friend | Enemy {
    return names[arg];
}

console.log(select("edward"));

非常感谢

您可以在类型中作为属性查找参数:

function select<T extends keyof typeof names>(arg: T): Names[T] {
函数选择(arg:T):名称[T]{

我认为您实际上不需要条件类型,您可以使用类型查询:非常好,没有想到。谢谢!…或者更一致地
函数选择(arg:t):名称[t]{/…
function select<T extends keyof typeof names>(arg: T): Names[T] {