asg*_*las 5 typescript reactjs react-native
在下面的设置中,我尝试为onChange函数中的value参数获取正确的推断类型。下面的设置为我提供了一个类型值,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 */ })})
Run Code Online (Sandbox Code Playgroud)
有两点将使推断正确-但在其他方面当然也将是错误的-但可能会提供错误提示:
我可以删除“道具”类型的这一部分: & (T extends number ?
NumberProps : StringProps);
我可以Y从React.Component之外的其他东西派生,例如class X<T> { constructor(props: T) {} }。
我是在做/预期有什么问题,还是Typescript和/或React类型的错误。
如果类型推断不起作用,您可以自己显式指定类型参数的值:
new Y<string>({ value: 'test', onChange:((value) => { /* value is now a string */ })})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |