亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
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',因為它是只讀屬性。