TypeScript Типи утиліт
TypeScript поставляється з великою кількістю типів, які можуть допомогти з деякими поширеними маніпуляціями з типами, які зазвичай називаються службовими типами.
Цей розділ охоплює найпопулярніші типи утиліт.
Partial
Partial
змінює всі властивості в об’єкті на необов’язкові.
Приклад
interface Point {
x: number;
y: number;
}
let pointPart: Partial<Point> = {}; // `Partial` дозволяє x та y бути необов’язковими
pointPart.x = 10;
Спробуйте самі »
Required
Required
змінює всі властивості в об’єкті на обов’язкові.
Приклад
interface Car {
make: string;
model: string;
mileage?: number;
}
let myCar: Required<Car> = {
make: 'Ford',
model: 'Focus',
mileage: 12000 // `Required` примусове визначення пробігу
};
Спробуйте самі »
Record
Record
це ярлик для визначення типу об’єкта з певним типом ключа та типом значення.
Record<string, number>
еквівалентно { [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
видаляє типи з об’єднання.
Приклад
type Primitive = string | number | boolean
const value: Exclude<Primitive, string> = true; // тут не можна використовувати рядок, оскільки Exclude видалив його з типу.
Спробуйте самі »
ReturnType
ReturnType
витягує тип повернення функції.
Приклад
type PointGenerator = () => { x: number; y: number; };
const point: ReturnType<PointGenerator> = {
x: 10,
y: 20
};
Спробуйте самі »
Parameters
Parameters
витягує типи параметрів типу функції як масив.
Приклад
type PointPrinter = (p: { x: number; y: number; }) => void;
const point: Parameters<PointPrinter>[0] = {
x: 10,
y: 20
};
Спробуйте самі »
Readonly
Readonly
використовується для створення нового типу, де всі властивості доступні лише для читання, тобто їх неможливо змінити після призначення значення.
Майте на увазі, що TypeScript запобігатиме цьому під час компіляції, але теоретично, оскільки його скомпільовано до JavaScript, ви все одно можете перевизначити властивість readonly.
Приклад
interface Person {
name: string;
age: number;
}
const person: Readonly<Person> = {
name: "Dylan",
age: 35,
};
person.name = 'Israel'; // prog.ts(11,8): error TS2540: Неможливо призначити 'name', оскільки це властивість лише для читання.
Спробуйте самі »