在下面的设置中,我尝试为onChange函数中的value参数获取正确的推断类型。下面的设置为我提供了一个类型为xserver-command=X -s 0 -dpms
的值,尽管考虑到为该值分配了一个string | number
,我本以为应该是string
。
string
有两件事将使推断正确-但在其他方面当然也将是错误的-但可能会为错误提供线索:
我可以删除此道具类型的这一部分: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 */ })})
我可以使& (T extends number ?
NumberProps : StringProps);
源自React.Component之外的其他东西,
例如Y
之类的类。
我是在做/预期有什么问题吗,还是这是Typescript和/或React类型的错误?
答案 0 :(得分:0)
如果无法进行类型推断,则可以自己明确指定类型参数的值:
new Y<string>({ value: 'test', onChange:((value) => { /* value is now a string */ })})