我可以在函数体中使用泛型吗?

时间:2018-11-15 13:10:57

标签: typescript

我有这样的函数声明:

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”

1 个答案:

答案 0 :(得分:0)

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

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];
    }
};