TypeScript: 常用型別與寫法
這篇是要不定期記錄開發中常遇到的型別,也會根據開發狀況陸續新增。
基本用法
這裡目前主要是參考這篇文章,並以React function component和props為例:
import React, {useState, suseRef} from 'react';
interface Props {
children?: React.ReactNode;
childrenElement?: JSX.Element;
style?: React.CSSPropertiess;
ref?: React.MutableRefObject;
setInput: () => void
}
function App(){
const [input, setInput] = useState('');
return <Form setInput={setInput} />
}
function Form(props: Props){
const inputRef = useRef(null);
const handleChange = (event: React.ChangeEvent<HTMLInputElement>){
// 這裡用 as 是為了避免偶爾會出現的編譯錯誤
console.log( (event.target as HTMLInputElement).value );
}
return
<form style={props.style}>
<input type="text" ref={inputRef} onChange={handleChange}/>
{props.children}
</forms>
}
物件
物件的宣告方式有好幾種,個人認為最好的宣告方式就如同上面範例用 interface
清楚定義的 Props
,不過也有其他定義物件的方式:
// 沒有明確指定key名稱
type AnyObject = { [key: string]: any };s
// 有限制key名稱
type Subject = "chinese" | "math" | "english" | ""
type SubjectObject = { [key in Subject]: number };
Immutable
type ConstantArray = ReadonlyArray<number>;
const scores = [50, 67, 80, 95] as const
References Hold down the clap button and see something cool happen Mutable and immutable useRef semantics with React & TypeScript Declaration Reference @TypeScript Docs 宣告檔案 @TypeScript新手指南