Kỹ năng phỏng vấn tuyển dụng

Top 20+ Câu Hỏi Phỏng Vấn Typescript Hay Gặp Nhất 

Bạn đang chuẩn bị cho một cuộc phỏng vấn Typescript và tìm kiếm một số thông tin chi tiết hữu ích? Typescript trở nên vô cùng phổ biến đối với các nhà phát triển nhờ khả năng thêm kiểu gõ tĩnh vào JavaScript, dẫn đến mã mạnh mẽ hơn và dễ bảo trì hơn. Để giúp bạn vượt qua cuộc phỏng vấn Typescript, Masterskills đã tổng hợp danh sách hơn 20 câu hỏi phỏng vấn Typescript thường gặp nhất cùng với một vài gợi ý trả lời!

Câu hỏi phỏng vấn Typescript dành cho fresher 

Đầu tiên, hãy đến với các câu hỏi phỏng vấn Typescript cơ bản dành cho fresher:

1. Các kiểu nguyên thủy trong Typescript là gì? 

Khi nói đến Typescript, việc hiểu các kiểu nguyên thủy là rất quan trọng. Các kiểu nguyên thủy trong Typescript bao gồm số, chuỗi, boolean, null, không xác định, ký hiệu và bigint. Các loại này đại diện cho các khối xây dựng cơ bản của dữ liệu trong ngôn ngữ.

2. Hãy giải thích cách các mảng hoạt động trong Typescript

Trong Typescript, các mảng tương tự như trong JavaScript. Chúng cho phép bạn lưu trữ nhiều giá trị cùng loại. Bạn có thể khai báo một mảng bằng cách chỉ định loại phần tử của nó, theo sau là dấu ngoặc vuông, chẳng hạn như “số[]” cho một mảng số. Mảng có thể được khởi tạo bằng chữ hoặc động thông qua các phương thức khác nhau do Typescript cung cấp.

3. Unknown type là gì? Khi nào thì sử dụng nó trong Typescript? 

Unknown type là đối tác an toàn của bất kỳ type nào. Bạn có thể gán bất kỳ thứ gì cho Unknown type, nhưng Unknown type không thể gán cho bất kỳ đối tượng nào ngoại trừ chính nó và bất kỳ đối tượng nào mà không thực hiện xác nhận loại thu hẹp dựa trên luồng điều khiển. Bạn không thể thực hiện bất kỳ thao tác nào trên một biến thuộc Unknown type mà không xác nhận trước hoặc thu hẹp nó thành một type cụ thể hơn.

Hãy xem xét ví dụ sau. Dưới đây là cách tạo biến foo có kiểu không xác định và gán giá trị chuỗi cho nó. Nếu chúng ta cố gắng gán Unknown type đó cho một biến chuỗi bar, trình biên dịch sẽ báo lỗi.

let foo: unknown = “Akshay”;

let bar: string = foo; // Type ‘unknown’ is not assignable to type ‘string’.(2322)

Bạn có thể thu hẹp một biến có Unknown type thành một biến cụ thể bằng cách thực hiện kiểm tra kiểu hoặc kiểm tra so sánh hoặc sử dụng bộ bảo vệ type. Ví dụ: chúng ta có thể thoát khỏi lỗi trên bằng cách: 

let foo: unknown = “Akshay”;

let bar: string = foo as string;

4. Làm thế nào để tạo Objects trong Typescript? 

Các đối tượng (Objects) là các bộ sưu tập khóa và giá trị giống như từ điển. Các Objects phải là duy nhất. Chúng tương tự như mảng và đôi khi còn được gọi là mảng kết hợp. Tuy nhiên, một mảng sử dụng các số để lập chỉ mục các giá trị, trong khi một Object cho phép bạn sử dụng bất kỳ loại nào khác làm khóa.

Trong TypeScript, một loại Object đề cập đến bất kỳ giá trị nào có thuộc tính. Nó có thể được định nghĩa bằng cách đơn giản liệt kê các thuộc tính và kiểu của chúng. Ví dụ:

let pt: { x: number; y: number } = {

  x: 10,

  y: 20

};

5. Kiểu void là gì? Khi nào thì sử dụng kiểu void? 

Kiểu void biểu thị sự vắng mặt của type trên một biến. Nó hoạt động như một loại ngược lại với any type. Nó đặc biệt hữu ích trong các hàm không trả về giá trị:

function notify(): void {

  alert("The user has been notified.");

}

Nếu một biến thuộc kiểu void, bạn chỉ có thể gán giá trị null hoặc không xác định cho biến đó.

Tham khảo:   Bộ Câu Hỏi Phỏng Vấn Product Owner Và Gợi Ý Trả Lời

6. Giải thích khái niệm null và công dụng của nó trong Typescript 

Trong lập trình, giá trị null biểu thị sự vắng mặt của giá trị. Một biến null không trỏ đến bất kỳ đối tượng nào khác. Do đó, bạn không thể truy cập bất kỳ thuộc tính nào trên biến hoặc gọi một phương thức trên đó.

Trong TypeScript, giá trị null được biểu thị bằng từ khóa ‘null’. Bạn có thể kiểm tra xem một giá trị có phải là null hay không bằng cách sau:

function greet(name: string | null) {

if (name === null) {

  console.log("Name is not provided");

} else {

  console.log("Good morning, " + name.toUpperCase());

}

}

var foo = null;

greet(foo); // "Name is not provided"

foo = "Anders";

greet(foo);  // "Good morning, ANDERS"

7. Undefined trong Typescript là gì? 

Khi một biến được khai báo mà không khởi tạo, nó được gán giá trị không xác định, tức Undefined. Bản thân nó không hữu ích lắm. Một biến không được xác định nếu nó được khai báo, nhưng không có giá trị nào được gán cho nó. Ngược lại, null được gán cho một biến và nó không đại diện cho giá trị nào.

8. Mục đích của kiểu never trong Typescript là gì? 

Đúng như tên gọi, kiểu never đại diện cho loại giá trị không bao giờ xảy ra. Ví dụ: một hàm không bao giờ trả về giá trị hoặc luôn đưa ra một ngoại lệ có thể đánh dấu kiểu trả về của nó là never:

function error(message: string): never {

throw new Error(message);

}

Bạn có thể thắc mắc tại sao chúng ta cần loại ‘never’ khi chúng ta đã có ‘void’. Mặc dù cả hai loại trông giống nhau, nhưng chúng đại diện cho hai khái niệm rất khác nhau.

Void trả về giá trị không xác định trong JavaScript. Do đó, mặc dù bạn đang nói rằng nó không trả về bất cứ thứ gì, nhưng nó đang trả về ‘không xác định’. Chúng ta thường bỏ qua giá trị trả về trong những trường hợp này. Hàm như vậy được suy ra là có kiểu trả về void trong TypeScript:

// This function returns undefined

function greet(name: string) {

console.log(`Hello, ${name}`);

}

let greeting = greet("David");

console.log(greeting);  // undefined

Ngược lại, một hàm có kiểu never sẽ không bao giờ trả về. Có 2 trường hợp hàm trả về không bao giờ gõ:

  • Trong một vòng lặp không hồi kết, ví dụ: một vòng lặp loại while(true){}.
  • Một hàm đưa ra lỗi, ví dụ: function foo(){throw new Exception(‘Thông báo lỗi’)}

9. Giải thích cách enums làm việc trong Typescript 

Enums trong Typescript cho phép bạn xác định một tập hợp các hằng số được đặt tên. Chúng cung cấp cách để tạo một tập hợp các giá trị có liên quan với ý nghĩa ngữ nghĩa. Enums rất hữu ích khi bạn có một biến chỉ có thể nhận một trong số các giá trị giới hạn. Theo mặc định, enum ánh xạ các giá trị của chúng thành các hằng số, nhưng bạn cũng có thể tùy chỉnh các giá trị cơ bản.

10. Toán tử typeof là gì? Nó được sử dụng trong Typescript như thế nào? 

Toán tử typeof trong Typescript được sử dụng để lấy thông tin loại của một biến, hàm hoặc đối tượng tại thời điểm biên dịch. Nó trả về một chuỗi đại diện của loại. Toán tử typeof có thể được sử dụng với các biến, hàm hoặc thậm chí với các chuỗi ký tự để suy luận hoặc kiểm tra loại biểu thức. Nó thường được sử dụng trong các bộ bảo vệ type và kiểm tra thời gian chạy.

Câu hỏi phỏng vấn Typescript cho người có kinh nghiệm 

11. Giải thích các biến thể khác nhau trong vòng lặp của Typescript

Trong Typescript, bạn có thể sử dụng các biến thể vòng lặp khác nhau như for, while và do-while để thực hiện các thao tác lặp. Các vòng lặp này hoạt động tương tự như các vòng lặp trong các ngôn ngữ lập trình khác và cho phép bạn lặp lại một tập hợp các câu lệnh dựa trên một điều kiện. Việc lựa chọn vòng lặp phụ thuộc vào các yêu cầu cụ thể của chương trình của bạn và logic lặp mà bạn cần thực hiện.

Tham khảo:   Bộ Câu Hỏi Phỏng Vấn Tester Thường Gặp Giúp Bạn Vượt Qua Ải Interview

12. Giải thích kiểu symbol trong Typescript

Kiểu symbol trong Typescript đại diện cho các giá trị duy nhất và bất biến có thể được sử dụng làm khóa thuộc tính trong các đối tượng. Các ký hiệu thường được sử dụng để xác định các ký hiệu nổi tiếng, là các ký hiệu được xác định trước được sử dụng bởi các tính năng JavaScript tích hợp. Các symbol cung cấp cách để tạo các thuộc tính riêng tư hoặc ẩn trong các đối tượng và ngăn xung đột tên.

13. Type inference trong Typescript nghĩa là gì? 

Type inference trong Typescript đề cập đến khả năng của trình biên dịch tự động xác định loại biến dựa trên cách sử dụng và giá trị được gán của nó. Nó loại bỏ nhu cầu chú thích rõ ràng các loại trong nhiều trường hợp, làm cho mã ngắn gọn và dễ đọc hơn. Type inference giúp phát hiện các lỗi liên quan đến kiểu trong quá trình biên dịch.

14. Mục đích của noImplicitAny là gì? 

noImplicitAny trong Typescript cho phép kiểm tra nghiêm ngặt đối với bất kỳ loại ngầm định nào. Khi được bật, trình biên dịch sẽ đưa ra lỗi nếu nó không thể suy ra loại biến và không có chú thích loại nào được cung cấp. Nó khuyến khích các nhà phát triển hiểu rõ ràng về các loại và giúp ngăn chặn việc sử dụng không chủ ý bất kỳ loại nào, dẫn đến mã hiệu quả hơn và dễ bảo trì hơn.

15. Giải thích các cách khác nhau để kiểm soát member visibility trong Typescript

Trong Typescript, bạn có thể kiểm soát khả năng hiển thị của thành viên bằng cách sử dụng các công cụ sửa đổi quyền truy cập như công khai, riêng tư và được bảo vệ. Công cụ sửa đổi công khai cho phép bạn truy cập không hạn chế vào thành viên từ mọi nơi. 

Công cụ sửa đổi riêng hạn chế quyền truy cập bên trong lớp chứa, trong khi công cụ sửa đổi được bảo vệ cho phép truy cập bên trong lớp chứa và các lớp con của nó. Bằng cách sử dụng các công cụ sửa đổi này, bạn có thể thực thi đóng gói và xác định phạm vi hiển thị của các thành viên lớp.

16. Typescript có hỗ trợ lớp static (static classes) không? Nếu không, hãy giải thích tại sao

Không, Typescript không hỗ trợ trực tiếp các static classes. Tuy nhiên, bạn có thể đạt được mong muốn tương tự bằng cách sử dụng các thuộc tính và phương thức static trong một lớp thông thường. 

Typescript khuyến khích sử dụng các static component để cung cấp các hàm tiện ích hoặc hằng số được liên kết với một lớp nhưng không yêu cầu truy cập một thể hiện. Cách tiếp cận này thúc đẩy tính mô đun và khả năng sử dụng lại mã.

17. Contextual typing là gì? 

Contextual typing trong Typescript là quá trình suy luận loại biểu thức dựa trên ngữ cảnh xung quanh. Nó cho phép bạn dựa vào loại dự kiến của một giá trị để xác định loại thực tế của nó. Contextual typing đặc biệt hữu ích trong các trường hợp mà suy luận kiểu sẽ thất bại hoặc khi làm việc với hệ thống phân cấp kiểu phức tạp.

Tham khảo:   Mẫu Câu Trả Lời Cực Hay Cho Câu Hỏi “Tại Sao Bạn Lại Nghỉ Việc Ở Công Ty Cũ?”

18. Kiểu alias (alias type) là gì? Làm thế nào để tạo một kiểu alias? 

Kiểu alias là một cách để tạo tên mới cho loại hiện có trong Typescript. Nó cung cấp một cách thuận tiện để xác định các loại phức tạp hoặc dài dòng và làm cho mã dễ đọc hơn. 

Bạn có thể tạo kiểu alias bằng cách sử dụng từ khóa kiểu, theo sau là tên mong muốn và định nghĩa kiểu tương ứng. Ví dụ: nhập MyAlias = string | con số; tạo kiểu alias MyAlias đại diện cho một chuỗi hoặc một số.

19. Làm thế nào để thực hiện kiểm tra null trong Typescript? 

Trong Typescript, bạn có thể thực hiện kiểm tra null bằng cách sử dụng toán tử kết hợp nullish (??) và toán tử chuỗi tùy chọn (?). Toán tử kết hợp nullish cho phép bạn cung cấp một giá trị mặc định khi một biến là null hoặc không xác định. 

Toán tử xâu chuỗi tùy chọn cho phép bạn truy cập các thuộc tính hoặc phương thức lồng nhau một cách an toàn mà không gây ra lỗi thời gian chạy nếu bất kỳ giá trị trung gian nào là null hoặc không xác định.

20. Liệt kê một số loại utility mà Typescript cung cấp và giải thích cách sử dụng chúng

Typescript cung cấp một số loại tiện ích giúp nâng cao hệ thống loại và cung cấp các tính năng hữu ích. Một số loại tiện ích thường được sử dụng bao gồm Partial<T>, Required<T>, Pick<T, K> và Omit<T, K>. 

Các loại này cho phép bạn tạo các kiểu mới dựa trên các kiểu hiện có bằng cách sửa đổi hoặc trích xuất các thuộc tính nhất định. Chúng cung cấp các công cụ mạnh mẽ để làm việc với các cấu trúc dữ liệu phức tạp và đảm bảo an toàn cho kiểu dữ liệu.

Kết luận

Vậy là Masterskills đã cùng bạn tìm hiểu các câu hỏi phỏng vấn Typescript thường gặp nhất. Hy vọng những gợi ý trên sẽ giúp bạn dễ dàng áp dụng kinh nghiệm và kiến thức của bản thân vào từng câu trả lời.

  Viện Đào Tạo Kỹ Năng Masterskills chuyên Đào Tạo tại Doanh Nghiệp (In-house) trên Toàn Quốc  
G

0903966729

1
Hỗ trợ bạn qua Zalo