类型推断在TypeScript中丢失了内部级别类型

时间:2018-05-04 19:06:34

标签: typescript

在下面的代码示例中,我无法弄清楚FinalType{ test: { test_inner: any } }的原因。我不知道any来自哪里(string丢失了)。同时,test的返回类型为{ test_inner: string }

interface IAction {
    type: string;
}

type Reducer<S> = (state: S, action: IAction) => S

function combineReducers<S>(reducers: { [K in keyof S]: Reducer<S[K]> }): Reducer<S> {
    const dummy = {} as S;
    return () => dummy;
}

const test_inner = (test: string, action: IAction) => {
    return 'dummy';
}
const test = combineReducers({
    test_inner
});

const test_outer = combineReducers({
    test
});

type FinalType = ReturnType<typeof test_outer>;

我正在输入我的redux应用程序。但我认为问题不是针对redux的。我很清楚@types/redux,但我不想使用它。

1 个答案:

答案 0 :(得分:5)

这是TypeScript如何向您显示类型的错误 - 记录https://github.com/Microsoft/TypeScript/issues/23897

FinalType真实类型实际上是正确的;它只是一个显示错误。