【问题标题】:How can I define a Typescript object return value for a function?如何为函数定义 Typescript 对象返回值?
【发布时间】:2021-04-27 01:02:02
【问题描述】:

我的函数如下所示:

parseRange = (text) => {
    var arr = [];
    var lower = null;
    var upper = null;
    if (!text || text === "") {
        lower = null;
        upper = null;
    }
    else if (text.indexOf("-") > 0) {
        arr = text.split("-");
        lower = +arr[0];
        upper = +arr[1];
    }
    else {
        lower = +text;
        upper = null;
    }
    return {
        lower: lower,
        upper: upper
    };
};

我对返回字符串和数字很熟悉,但是我如何指定返回的是一个带有 lower 和 upper 参数的对象?

【问题讨论】:

    标签: typescript


    【解决方案1】:
    parseRange = (text: string) : { lower: number; upper: number; } => {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    };
    

    parseRange = <(text: string) : { lower: number; upper: number; }> ((text) => {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    });
    

    var parseRange : (text: string) => { lower: number; upper: number; } = (text) => {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    };
    

    parseRange = function (text: string) : { lower: number; upper: number; } {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    };
    

    function parseRange(text: string) : { lower: number; upper: number; } {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    };
    

    interface RangeResult {
        lower: number;
        upper: number;
    }
    function parseRange(text: string) : RangeResult {
        // ...
        return {
            lower: lower,
            upper: upper
        };
    };
    

    【讨论】:

    • 这几乎涵盖了指定此返回类型的所有方法!非常全面。
    【解决方案2】:

    TypeScript infers function return types,因此这会导致编译错误,而无需显式指定类型:

    var parseRange = (text) => {
        return {
            lower: 5,
            upper: 6
        };
    };
    
    var range = parseRange("");
    range.foo; // compile error
    

    Live example 显示错误:

    属性 'foo' 不存在于类型 '{ lower: number;上:数字; }'。

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2021-05-01
      • 1970-01-01
      • 2017-09-17
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多