TypeScript 教程
/ 實用類型
實用類型
Partial
Partial
將對象中的所有屬性變?yōu)榭蛇x。
實例
interface Point { x: number; y: number; } let pointPart: Partial<Point> = {}; // 'Partial' 允許 x 和 y 為可選 pointPart.x = 10;
Required
Required
將對象中的所有屬性變?yōu)楸靥睢?/p>
實例
interface Car { make: string; model: string; mileage?: number; } let myCar: Required<Car> = { make: 'Ford', model: 'Focus', mileage: 12000 // 'Required' 強制定義 mileage };
Record
Record
是定義具有特定鍵類型和值類型的對象類型的快捷方式。
實例
const nameAgeMap: Record<string, number> = { 'Alice': 21, 'Bob': 25 }; Record<string, number> is equivalent to { [key: string]: number }
Omit
Omit
從對象類型中移除鍵。
實例
interface Person { name: string; age: number; location?: string; } const bob: Omit<Person, 'age' | 'location'> = { name: 'Bob' // 'Omit' 已從類型中移除了 age 和 location,因此不能在此處定義它們 };
Pick
Pick
從對象類型中僅保留指定的鍵,移除其他所有鍵。
實例
interface Person { name: string; age: number; location?: string; } const bob: Pick<Person, 'name'> = { name: 'Bob' // 'Pick' 僅保留了 name,因此從類型中移除了 age 和 location,不能在此處定義它們 };
Exclude
Exclude
從聯(lián)合類型中移除類型。
實例
type Primitive = string | number | boolean const value: Exclude<Primitive, string> = true; // 由于 Exclude 將其從類型中移除,因此此處不能使用字符串。
ReturnType
ReturnType
提取函數(shù)類型的返回類型。
實例
type PointGenerator = () => { x: number; y: number; }; const point: ReturnType<PointGenerator> = { x: 10, y: 20 };
Parameters
Parameters
提取函數(shù)類型的參數(shù)類型作為數(shù)組。
實例
type PointPrinter = (p: { x: number; y: number; }) => void; const point: Parameters<PointPrinter>[0] = { x: 10, y: 20 };
Readonly
Readonly
用于創(chuàng)建一個新類型,其中所有屬性都是只讀的,這意味著一旦為它們分配了值,就無法修改它們。
請記住,TypeScript 將在編譯時阻止這種情況,但從理論上講,由于它被編譯為 JavaScript,您仍然可以覆蓋只讀屬性。
實例
interface Person { name: string; age: number; } const person: Readonly<Person> = { name: "Dylan", age: 35, }; person.name = 'Israel'; // prog.ts(11,8): 錯誤 TS2540: 無法分配給 'name',因為它是只讀屬性。