首页 > 解决方案 > 打字稿我可以在函数体中使用泛型类型吗

问题描述

我有这样的函数声明:

export const filterOptions: <OptionValueType>(options: OptionsArray<OptionValueType>, filterBy: string) => OptionsArray<OptionValueType> = (options, filterBy) => {
    if (filterBy === '') {
        return [...options];
    } else {
        const filteredOptions: OptionsArray<OptionValueType> = [];
        // filter and return options


        return [...filteredOptions];
    }
};

但是,打字稿将此代码标记为错误,我们可以在函数体中使用泛型类型吗?

const filteredOptions: OptionsArray<OptionValueType> = [];

TS2304:找不到名称“OptionValueType”

标签: typescript

解决方案


您可以在主体中使用泛型类型参数,但泛型类型参数必须在函数实现上,而不是在将保存函数的变量上

export const filterOptions = <OptionValueType>(options: OptionsArray<OptionValueType>, filterBy: string) : OptionsArray<OptionValueType> => {
    if (filterBy === '') {
        return [...options];
    } else {
        const filteredOptions: OptionsArray<OptionValueType> = [];
        // filter and return options


        return [...filteredOptions];
    }
};

推荐阅读