首页 > 解决方案 > 如果通用字符串参数是文字字符串,则返回类型值,如果不是,则返回其他类型

问题描述

我的情况有点复杂,我有一个Options带有一些键和值的界面。我想创建一个函数,它只有一个参数keyof Options,但返回类型应该不同,如果参数是fields,它应该返回一个对象,否则,它应该返回一个布尔值。但我的测试不成功:/

我的测试:

interface Options {
    fields: string;
    someOtherKeys: number;
    someOtherKeys2: number;
    // ...
}

function myFunction<K extends keyof Options(key: K): K extends "fields" ? {key: boolean} : boolean {
    if (key === 'fields') return {key: true};
    else return false;
}
// This is a simplified test, not my real code.

我在代码上遇到奇怪的错误,例如:
对于第一行:Type '{ key: true; }' is not assignable to type 'K extends "fields" ? { key: boolean; } : boolean'.
对于第二行:Type 'false' is not assignable to type 'K extends "fields" ? { key: boolean; } : boolean'.

标签: typescriptgenericstypesstring-literalsconditional-types

解决方案


推荐阅读