(在https://github.com/codingismy11to7/lazy-component-typing复制)
我猜这是一个问题@types/react和LazyExoticComponent定义......
在React.lazy()带有类型参数的组件上使用时,Typescript 无法再编译项目。
给定组件:
import React from "react";
export interface Props<T> {
value: T;
valueCallback: (t: T) => void;
}
export default function TypedComponent<T>(props: Props<T>) {
return (
<>
<div>{`${props.value}`}</div>
<button onClick={() => props.valueCallback(props.value)}>click</button>
</>
)
}
Run Code Online (Sandbox Code Playgroud)
这编译:
import React, {useState} from "react";
import TypedComponent from "./TypedComponent";
export default function StrictComponent() {
const [state, setState] = useState("blah");
return (
<TypedComponent value={state} valueCallback={setState}/>
);
}
Run Code Online (Sandbox Code Playgroud)
虽然这不会:
import React, {lazy, useState} from "react"; …Run Code Online (Sandbox Code Playgroud)