在react中使用typescript
常用props ts类型
基础属性类型
type AppProps = {
message: string
count: number
disabled: boolean
names: string[ ]
status: 'waiting' | 'success'
obj: object
obj2: {
}
obj3: {
id: string
title: string
}
objArr: {
id: string
title: string
} [ ]
dict1: {
[ key: string] : MyTypeHere
}
dict2: Record< string, MyTypeHere>
onSomething: Function
onClick: ( ) => void
onChange: ( id: number) => void
onClick ( event: React. MouseEvent< HTMLButtonElement> ) : void
optional? : OptionalType
}
常用React属性类型
export declare interface AppBetterProps {
children: React. ReactNode
functionChildren: ( name: string) => React. ReactNode
style? : React. CSSProperties
onChange? : React. FormEventHandler< HTMLInputElement>
}
export declare interface AppProps {
children1: JSX . Element
children2: JSX . Element | JSX . Element[ ]
children3: React. ReactChildren
children4: React. ReactChild[ ]
children: React. ReactNode
functionChildren: ( name: string) => React. ReactNode
style? : React. CSSProperties
onChange? : React. FormEventHandler< HTMLInputElement>
}
更多用法
const App: react. FC < {
} > = ( ) => [ 1 , 2 , 3 ] as any
const App = ( {
message, children} : React. PropsWithChildren< {
message: string} > )
const ref1 = React. useRef< HTMLInputElement> ( null )
const ref2 = React. useRef< HTMLInputElement | null > ( null )
const handleChange = React. useCallback<
React. ChangeEventHandler< HTMLInputElement>
> ( evt => {
console. log ( evt. target. value)
} , [ ] )
function tuplify< T extends any [ ] > ( ... elements: T ) {
return elements
}
function useLoading ( ) {