2017-02-22 15 views
2

Relevant line.Почему интерфейс TypeScript Redux.js «Dispatch» имеет параметр шаблона?

Если интерфейс выглядит следующим образом:

export interface Dispatch<S> { 
    <A extends Action>(action: A): A; 
} 

... и S явно не используется, то почему там?

Я заметил, что S используется в других местах для «хранения» связанных вещей, но если он не используется в этом интерфейсе, я не думаю, что он должен быть там.

+1

Вы можете увидеть запрос на извлечение, который добавил этот интерфейс и аргументы по этой ссылке: https://github.com/reactjs/redux/pull/1537 – Lucas

ответ

0

Имея состояние параметра параметра S, позволяет средним продуктам быть более точными в типизация. Например, функция thunk принимает отправку и getState(): S, поэтому без S она не может быть хорошо типизирована. Смотрите пример этого здесь ниже https://github.com/Igorbek/redux/blob/ts-def-improv/test/typescript/dispatch.ts#L9-L16

Source

Заслуга @Lucas для нахождения этого источника.

1

Вы правы, это по своей сути, похоже, не имеет большого смысла.

Я думаю, что они сделали это, чтобы гарантировать, что функции отправки возвращаются в middleware.

В случае промежуточного программного обеспечения, такого как redux-thunk, new dispatch function действительно использует параметр <S>, хотя я не уверен, что это имеет значение, если по умолчанию в этом случае не было.

 Смежные вопросы

  • Нет связанных вопросов^_^