Những câu hỏi phỏng vấn TypeScript (Phần 1)
Bài viết dưới đây tổng hợp những câu hỏi thường gặp khi đi phỏng vấn Typescript. Thử trả lời xem kiến thức của mình đến đâu và cần bổ sung gì nhé!
Q1. TypeScript là gì? Tại sao chúng ta nên sử dụng nó?
TypeScript là một typed superset của JavaScript nó được compile thành plain Javascript để chạy trên các trình duyệt hoặc các Javascript engine.
TypeScript không chỉ hỗ trợ các tính năng mới nhất của JavaScript mà còn bổ sung thêm một vài tính năng như: static typing, OOP
class Person{ constructor (private name: string, private value: string) {} } const person = new Person("Toan", "Nam") console.log(person) // Person { name: 'Toan', value: 'Nam' }
Q2. Type trong TypeScript là gì?
Type đại diện cho kiểu giá trị mà chúng ta sử dụng. Một số kiểu dữ liệu cơ bản trong TypeScript như: number, string, boolean.
Định nghĩa kiểu của biến bằng cách thêm dấu : (colon) sau tên biến.
let decimal: number = 6 let color: string = "blue" let notSure: any = 4 let unusable: void = undefined
Tại sao cần định nghĩa Type?
- Tăng cường chất lượng của code. Đọc code sẽ dễ hiểu hơn khi có Type
- Nhờ có Type mà các compiler có thể xác định được một số lỗi trong quá trình compile.
Q3. Type assertion trong TypeScript là gì?
Đây là một cách để thông báo cho compiler biết kiểu của đối tượng mà mình sử dụng. Nói ngắn gọn là ép kiểu cho đối tương.
Có hai cách để sử dụng Type assertions. Một là sử dụng “<>” (angle bracket):
let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length;
Cách 2 là dùng as syntax:
let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;
Note: 2 cách này trong TypeScript là tương đương nhau. Nhưng khi dùng TypeScript với JSX thì chỉ dùng được as syntax.
Q4. Giải thích về Relative và Non-relative module imports.
Relative import là import dựa theo đường dẫn tương đối. Đường dẫn không cố định mà phụ thuộc vào vị trí của file gọi hàm import. Nó thường bắt đầu với /
, ./
hoặc ../
. Xem xét 1 vài ví dụ dưới đây:
- import Entry from “./components/Entry”
- import { DefaultHeaders } from “../constants/http”
Những module imports còn lại được xem xét là: Non-relative import:
- import * as $ from “jquery”
- import { Component } from “@angular/core”
Q5. Triple-Slash Directive là gì?
Triple-Slash Directive là dòng comment chứa 1 XML tag. Nội dung của comment này được sử dụng để chỉ thị cho compiler.
Nó chỉ có hiệu lực khi đặt ở đầu file chứa nó. Nếu ở dưới một statement hoặc declaration thì chỉ giống như một comment thông thường.