Các loại tiện ích TypeScript
TypeScript đi kèm với một số lượng lớn các kiểu có thể trợ giúp với một số thao tác kiểu phổ biến, thường được gọi là các kiểu tiện ích.
Chương này bao gồm các loại tiện ích phổ biến nhất.
một phần
Partial
thay đổi tất cả các thuộc tính trong một đối tượng thành tùy chọn.
Ví dụ
interface Point {
x: number;
y: number;
}
let pointPart: Partial<Point> = {}; // `Partial` allows x and y to be optional
pointPart.x = 10;
Hãy tự mình thử »Yêu cầu
Required
thay đổi tất cả các thuộc tính trong một đối tượng được yêu cầu.
Ví dụ
interface Car {
make: string;
model: string;
mileage?: number;
}
let myCar: Required<Car> = {
make: 'Ford',
model: 'Focus',
mileage: 12000 // `Required` forces mileage to be defined
};
Hãy tự mình thử »Ghi
Record
là lối tắt để xác định loại đối tượng với loại khóa và loại giá trị cụ thể.
Record<string, number>
tương đương với { [key: string]: number }
Được chứng nhận!
$45 ĐĂNG KÝ
Bỏ sót
Omit
loại bỏ các khóa khỏi một loại đối tượng.
Ví dụ
interface Person {
name: string;
age: number;
location?: string;
}
const bob: Omit<Person, 'age' | 'location'> = {
name: 'Bob'
// `Omit` has removed age and location from the type and they can't be defined here
};
Hãy tự mình thử »Nhặt
Pick
loại bỏ tất cả trừ các khóa được chỉ định khỏi một loại đối tượng.
Ví dụ
interface Person {
name: string;
age: number;
location?: string;
}
const bob: Pick<Person, 'name'> = {
name: 'Bob'
// `Pick` has only kept name, so age and location were removed from the type and they can't be defined here
};
Hãy tự mình thử »Loại trừ
Exclude
loại bỏ các loại khỏi một liên minh.
Ví dụ
type Primitive = string | number | boolean
const value: Exclude<Primitive, string> = true; // a string cannot be used here since Exclude removed it from the type.
Hãy tự mình thử »Kiểu trả về
ReturnType
trích xuất kiểu trả về của kiểu hàm.
Ví dụ
type PointGenerator = () => { x: number; y: number; };
const point: ReturnType<PointGenerator> = {
x: 10,
y: 20
};
Hãy tự mình thử »Thông số
Parameters
trích xuất các loại tham số của loại hàm dưới dạng mảng.
Ví dụ
type PointPrinter = (p: { x: number; y: number; }) => void;
const point: Parameters<PointPrinter>[0] = {
x: 10,
y: 20
};
Hãy tự mình thử »Chỉ đọc
Readonly
được sử dụng để tạo một loại mới trong đó tất cả các thuộc tính đều ở dạng chỉ đọc, nghĩa là chúng không thể được sửa đổi sau khi được gán một giá trị.
Hãy nhớ rằng TypeScript sẽ ngăn chặn điều này tại thời điểm biên dịch, nhưng về mặt lý thuyết vì nó được biên dịch thành JavaScript nên bạn vẫn có thể ghi đè thuộc tính chỉ đọc.
Ví dụ
interface Person {
name: string;
age: number;
}
const person: Readonly<Person> = {
name: "Dylan",
age: 35,
};
person.name = 'Israel'; // prog.ts(11,8): error TS2540: Cannot assign to 'name' because it is a read-only property.
Hãy tự mình thử »