В этом посте вы узнаете 15 полезных советов и приемов машинописи, которые повысят вашу производительность и обеспечат меньше ошибок в вашем коде.
1. Не используйте (as) для лучшей проверки типов
type User = { name: string; age: number; email: string; } const user = { name: ‘John Doe’, age: 30 } as User;
Это не приведет к ошибке из-за того, что вы не указали свойство `email`. Чтобы обеспечить проверку типов, напишите так:
type User = { name: string; age: number; email: string; } const user: User = { name: ‘John Doe’, age: 30 };
2. Используйте (as) для неизменности
const values = [1, 2, 3]; values.push(4); console.log(values); // [1, 2, 3, 4]
Чтобы сделать массив значений неизменяемым или сделать его доступным только для чтения, вы можете использовать `as`
const values = [1, 2, 3] as const; values.push(4); // Property 'push' does not exist on type 'readonly [1, 2, 3]' console.log(values);
То же самое относится и к объектам,
const user = { name: ‘john’ } as const; user.name = ‘david’;
нельзя присвоить «имя», потому что это свойство доступно только для чтения
3. Используйте утилиту записи при создании динамического объекта или неизвестном типе свойства
type Profile = Record<string, unknown>; const profile: Profile = { id: 12, name: 'Brock' }
4. Используйте утилиту pick при создании нового типа из заданного типа.
type User = { name: string; age: number; email: string; } const sendEmail = (arg: Pick<User, "name" | "email">) => { console.log(arg); // { name: 'John', email: '[email protected]' } } const user = { name: 'John', email: '[email protected]' } sendEmail(user);
5. Используйте Generics, чтобы обеспечить возможность повторного использования функции
function removeItem<T>(arr: Array<T>, item: T): Array<T> { const index = arr.findIndex(value => value === item); arr.splice(index, 1); return arr; } removeItem([1, 2, 3], 3); removeItem([‘PHP’, ‘JavaScript’, ‘Python’], ‘PHP’);
Теперь arr может быть массивом строк или массивом чисел, а элемент может быть числом или строкой, мы можем повторно использовать функцию removeItem.
6. Используйте partial, чтобы сделать каждый тип свойства необязательным
type Post = { id: number; title: string; body: string; } const post: Partial<Post> = { title: “This is my first post” }
В этом примере `id` и `body` игнорируются, так как это Partial‹Post›.
7. Используйте индексированный тип доступа для поиска определенного свойства из типа
type Message = { id: number; body: string; sender: { name: string; email: string; } } type MessageSender = { info: Message[‘sender’]; }
В этом примере мы получаем тип отправителя, используя индексированный тип доступа typeScript.
8. Используйте Type Guards, когда вы используете объединение типов
function showMessage(message: string | object): void { if (typeof message === "string") { console.log("The type is string"); } else if (typeof message === "object") { console.log("The type is object"); } } showMessage({ name: "John Doe" });
Как и `typeof`, typescript также обеспечивает защиту типа `in`,
type User = { name: string; age: number; } type UserAddress = { house_no: number; state: string; city: string; } const main = (obj: User | UserAddress) => { if(‘name’ in obj) { processUser(obj); } else { processAddress(obj); } } main({ name: ‘John’, age: 24 });
9. Не делайте свойство необязательным, если оно недопустимо, вместо этого создайте новый тип с пропущенной утилитой.
type Post = { id: number; title: string; body: string; category: string; } const savePost = (obj: Omit<Post, “category”>) => {}
У отдельного поста может не быть свойства категории, но его все равно необходимо обработать.
10. Укажите тип каждого API отдельно
// don’t do like this type GitHubAndSlackAPI = { id: string; title: string; body: string; created_at?: Date } // instead do like this type GitHubPRApi = { id: string; title: string; body: string; created_at: Date } type SlackApi = { id: string; title: string; body: string; }
Таким образом, мы можем эффективно добавлять больше информации для каждого API.
Это 10 советов и приемов машинописного текста.
Кредит
Этот пост написал один из лучших инженеров-программистов Technext — Мухаммад Лахин.
Technext помогает стартапам и компаниям нанимать отличных инженеров-программистов.
Вы можете нанять оффшорную команду разработчиков программного обеспечения от Technext.
Пожалуйста, ознакомьтесь с услугами, которые мы предлагаем как услуги по разработке оффшорного программного обеспечения для ваших стартапов.
Есть проекты?
Свяжитесь с нами, чтобы нанять блестящую команду разработчиков программного обеспечения и дизайнеров UI/UX. Создавайте проекты своей мечты.
Давайте сотрудничать
Поговорите с нашим руководством напрямую.
https://bd.linkedin.com/in/syed-rezwanul-haque-b7889628
- https://technext.it
- [email protected]
- +8801717141905