Typescript和React:使用React.Component和条件类型的props时类型推断失败

时间:2019-01-28 16:00:16

标签: reactjs typescript react-native

在下面的设置中,我尝试为onChange函数中的value参数获取正确的推断类型。下面的设置为我提供了一个类型为xserver-command=X -s 0 -dpms 的值,尽管考虑到为该值分配了一个string | number,我本以为应该是string

string

有两件事将使推断正确-但在其他方面当然也将是错误的-但可能会为错误提供线索:

  1. 我可以删除此道具类型的这一部分:import * as React from 'react' type NumberProps = { decimals: number; }; type StringProps = {}; type Props<T> = { value: T; onChange: (value: T) => void; } & (T extends number ? NumberProps : StringProps); class Y<T extends string | number> extends React.Component<Props<T>> {} new Y({ value: 2.5, onChange:((value) => { /* value is inferred as string | number, but should be number */ })})

  2. 我可以使& (T extends number ? NumberProps : StringProps);源自React.Component之外的其他东西, 例如Y之类的类。

我是在做/预期有什么问题吗,还是这是Typescript和/或React类型的错误?

1 个答案:

答案 0 :(得分:0)

如果无法进行类型推断,则可以自己明确指定类型参数的值:

new Y<string>({ value: 'test', onChange:((value) => { /* value is now a string */ })})