Typescript Là Gì

Mục lục nội dung

Chức năng của TypeScript là gì?Ưu điểm của Typescript là gì?Nhược điểm của Typescript là gì?

Typescript là gì? hôm nay chúng ta sẽ với mọi người trong nhà phân tích cặn kẽ ưu điểm và nhược điểm của typescript để hoàn toàn có thể quyết định xem nên thực hiện nó ra sao cho công dụng nhé!

Định nghĩa Typescript là gì?

*

Khác cùng với sự đơn giản và dễ dàng của JavaScript, du TypeScript cũng đồng thời thừa kế nhiều định nghĩa, tư tưởng của nhiều chủng loại các ngôn từ C#, Java,… tuy nhiên TypeScript lại có yêu ước cao về cô đơn tự rõ ràng. 

TypeScript được xem là một phiên bản nâng cao hơn của JavaScript vày nó được thiết kế với thêm nhiều chức năng tiện lợi hơn, cách tân hơn trường đoản cú những điểm yếu của JavaScript như các lớp hướng đối tượng người dùng và Static Structural typing, trong khi TypeScript còn có thể chuyển động rộng rãi cho các ứng dụng của ngôn ngữ Angular2 cùng Nodejs.

Bạn đang xem: Typescript là gì

Tìm việc làm Typescript từ những công ty HOT new nhất

Chức năng của TypeScript là gì?

Static Typing

Một trong những tính năng không thể lẫn vào đâu được của TypeScript kia là cung ứng ‘static typing’. Đồng nghĩa với việc chúng ta cũng có thể khai báo kiểu mang đến biến, cùng trình biên dịch sẽ bớt được phần trăm gán không đúng kiểu của những giá trị. Trường hợp khai báo thứ hạng bị quăng quật qua, bọn chúng sẽ được tự động hóa phát hiện tại từ code của bạn.

Ví dụ: các biến, thông số của hàm hoặc cực hiếm trả lại có thể có những kiểu được khái niệm khi khởi tạo:

var burger: string = "Spaghetti", // String calories: number = 400, // Numeric tasty: boolean = true; // Boolean// Alternatively, you can omit the type declaration:// var pasta = "Spaghetti";// The function expects a string and an integer.// It doesn"t return anything so the type of the function itself is void.function speak(food: string, energy: number): void console.log("Our " + food + " has " + energy + " calories.");speak(pasta, calories);Toàn bộ khai báo kiểu có khả năng sẽ bị xóa vào trường thích hợp TypeScript biên dịch thành JavaScript thành công

// JavaScript code from the above TS example.var burger = "Spaghetti", calories = 400, tasty = true; function speak(food, energy) console.log("Our " + food + " has " + energy + " calories.");speak(Spaghetti, calories);Biên dịch tsc sẽ báo lỗi khi họ thao tác không đúng theo lệ. Ví dụ:

// The given type is boolean, the provided value is a string.var tasty: boolean = "I haven"t tasted it yet";main.ts(1,5): error TS2322: Type "string" is not assignable to type "boolean".Hệ thống cũng sẽ báo lỗi nếu làm việc truyền không đúng tham số cho tới một hàm:

function speak(food: string, energy: number): void console.log("Our " + food + " has " + energy + " calories.");// Arguments don"t match the function parameters.speak("Sea Food Spaghetti", "a ton of");main.ts(5,30): error TS2345: Argument of type "string" is not assignable to lớn parameter of type "number".

Các kiểu dữ liệu được sử dụng thông dụng nhất:

Any – Một đổi thay với hình dáng này có thể có giá chỉ trị là một trong string, number hoặc bất kỳ kiểu nào.String – Giống tính năng của string vào JavaScript, rất có thể được phủ bọc bởi ‘dấu nháy đơn’ hoặc “dấu nháy kép”.Number – tất cả giá trị số vào hàm hầu như được trình diễn bởi kiểu number, không tồn tại định nghĩa riêng mang đến số nguyên (interger), số thực (float) tương tự như các phong cách khác.Boolean – true hoặc false, thực hiện 0 cùng 1 sẽ gây nên lỗi biên dịch.Arrays – tất cả 2 hình dáng cú pháp: my_arr: number<>; hoặc my_arr: Array.Void – áp dụng khi hàm ko trả lại bất kỳ giá trị nào.Để xem danh sách tất cả các kiểu dáng biến, phát âm tài liệu giải đáp của TypeScript trên đây.

Interfaces

Chức năng thiết yếu của Interfaces là thực hiện để kiểm tra, xem một đối tượng người tiêu dùng có cân xứng với một cấu tạo nhất định tốt không, giúp sức trong tiến trình giai đoạn vạc triển.

Bằng giải pháp định nghĩa một interface, ta có thể đặt thương hiệu trong ngôi trường hợp tất cả sự kết hợp đặc trưng của những biến, bảo đảm rằng chúng luôn luôn đi thuộc nhau.

Xem thêm: Pháp Luật Pháp Là Gì ? Pháp Luật Xây Dựng Và Thực Thi Như Thế Nào?

Ví dụ:

// Here we define our Food interface, its properties, và their types.interface Food name: string; calories: number;// We tell our function lớn expect an object that fulfills the Food interface. // This way we know that the properties we need will always be available.function speak(food: Food): void console.log("Our " + food.name + " has " + food.calories + " calories.");// We define an object that has all of the properties the Food interface expects.// Notice that types will be inferred automatically.var ice_cream = name: "cookies", calories: 250speak();Ngoài ra bạn nên biết rằng, trang bị tự của các thuộc tính không đặc trưng bằng việc bọn họ phải fill đủ số lượng các trực thuộc tính và đúng kiểu. Nếu một nằm trong tính nào đó bị thiếu, hoặc sai kiểu, hoặc không đúng tên, trình biên dịch sẽ lưu ý chúng ta.

interface Food name: string; calories: number;function speak(food: Food): void console.log("Our " + food.name + " has " + food.calories + " grams.");// We"ve made a deliberate mistake và name is misspelled as nmae.var cookies = nmae: "cookies", calories: 250speak(cookies);main.ts(16,7): error TS2345: Argument of type " nmae: string; calories: number; is not assignable lớn parameter of type "Food". Property "name" is missing in type " nmae: string; calories: number; ".

Classes

Trong các dự án, áp dụng lớn, lập trình hướng đối tượng rất xuất xắc được các Dev thực hiện nhất là trong các ngôn ngữ như Java hoặc C#.

TypeScript hỗ trợ hệ thống class khá tương đồng với những ngôn ngữ này lấy một ví dụ như tính năng kế thừa, abstract classes, interface implementations, setter/getters, …

Từ phiên bản ECMAScript năm ngoái trở đi, classes được xem là một nhân kiệt có sẵn trong JS và hoàn toàn có thể không cần thực hiện TypeScript. Tuy vậy 2 phiên bản này có nhiều tính năng tương từ nhau, mà lại chúng vẫn đang còn điểm không giống biệt, sẽ là TypeScript nghiêm khắc hơn.

Ví dụ:

class thực đơn { // Our properties: // By mặc định they are public, but can also be private or protected. Items: Array; // The items in the menu, an array of strings. Pages: number; // How many pages will the thực đơn be, a number. // A straightforward constructor. Constructor(item_list: Array, total_pages: number) // The this keyword is mandatory. This.items = item_list; this.pages = total_pages; // Methods list(): void { console.log("Our special meal today is:"); for(var i=0; iCú pháp này khá rất gần gũi cho dân Java hoặc C#. Tựa như cho kế thừa:

class HappyMeal extends thực đơn { // Properties are inherited // A new constructor has to lớn be defined. Constructor(item_list: Array, total_pages: number) // In this case we want the exact same constructor as the parent class (Menu), // to lớn automatically copy it we can hotline super() - a reference lớn the parent"s constructor. Super(item_list, total_pages); // Just lượt thích the properties, methods are inherited from the parent. // However, we want to override the list() function so we redefine it. List(): void{ console.log("Our special menu for children:"); for(var i=0; i

Modules

Tính module hóa rất quan trọng đặc biệt khi các bạn đang thực hiện những dự án lớn. Nó phân chia code thành nhiều thành phần nhỏ và còn có chức năng tái áp dụng giúp dự án của người sử dụng dễ tổ chức và dễ dàng nắm bắt hơn so với tệp tin có hàng vạn dòng code.

TypeScript có tính năng exporting cùng importing các module, nhưng phiên bản thân nó ko thể giải pháp xử lý thực sự việc liên kết giữa các file. Sử dụng require.js cho những ứng dụng client và CommonJS mang đến Node.js để được cho phép modules TS dựa trên các thư viện của bên thứ ba.

Đặt trường hợp bao gồm 2 file: 1 tệp tin export một hàm, 1 file import, họ sẽ điện thoại tư vấn nó là:

exporter.ts

var sayHi = function(): void console.log("Hello!");export = sayHi;importer.ts

import sayHi = require("./exporter");sayHi();Để tất cả thể kết thúc thao tác, cần tải về require.js với thêm nó vào một thẻ script – xem chỉ dẫn typescript là gì của requirejs.org. Tiếp nối biên dịch 2 tệp tin .ts. Mộ tham số mở rộng cần được sản xuất để nói cùng với TypeScript chúng ta đang xây dựng những module cho require.js (còn được điện thoại tư vấn là AMD):

tsc --module amd *.ts

Generics

Chức năng của Generics là có thể chấp nhận được cùng một hàm gồm thể đồng ý các tham số với nhiều kiểu khác nhau. Việc tạo nên các thành phần có thể tái sử dụng với generics giỏi hơn thực hiện kiểu any, vị generics bảo tồn kiểu của các biến vào và ra của chúng.

Ví dụ: Generics trong ví dụ bên dưới đây đã nhận một tham số và trả lại một mảng đựng cùng tham số

// The after the function name symbolizes that it"s a generic function.// When we hotline the function, every instance of T will be replaced with the actual provided type.// Receives one argument of type T,// Returns an array of type T.function genericFunc(argument: T): T<> var arrayOfT: T<> = <>; // Create empty array of type T. ArrayOfT.push(argument); // Push, now arrayOfT = . Return arrayOfT;var arrayFromString = genericFunc("beep");console.log(arrayFromString<0>); // "beep"console.log(typeof arrayFromString<0>) // Stringvar arrayFromNumber = genericFunc(42);console.log(arrayFromNumber<0>); // 42console.log(typeof arrayFromNumber<0>) // numberLần thứ nhất gọi hàm họ thiết lập phong cách thành string. Điều này sẽ không bắt buộc bởi trình biên dịch có thể xem tham số được truyền và tự động quyết định dạng hình nào phù hợp nhất, y hệt như lần hotline hàm vật dụng 2.

Mặc dù không bắt buộc, luôn luôn cung ứng kiểu được xem như là cần thiết vì trình biên dịch có thể đoán không đúng kiểu trong số kịch phiên bản phức tạp.

Tài liệu lý giải của TypeScript là gì bao gồm một vài lấy ví dụ cao cấp bao gồm generics classes, phối hợp chúng với interfaces, …ở typescriptlang.org.