- vừa được xem lúc

Modules Trong TypeScript

0 0 19

Người đăng: Gấu con

Theo Viblo Asia

Kể từ ES6, JavaScript bắt đầu hỗ trợ các modules như một phần của ngôn ngữ. TypeScript chia sẻ các khái niệm module giống với JavaScript.
Một module trong TypeScript có chứa cả khai báo và code. Một module thực thi trong phạm vi riêng của nó, không phải trong phạm vi toàn cục. Điều đó có nghĩa là khi bạn khai báo các biến, hàm, lớp, giao diện, v.v., trong một module, chúng không hiển thị bên ngoài module, trừ khi bạn xuất chúng một cách rõ ràng bằng cách sử dụng câu lệnh export .
Mặt khác, nếu bạn muốn truy cập các biến, hàm, lớp, v.v., từ một module, bạn cần nhập chúng bằng cách sử dụng câu lệnh import .

Creating a new module

Code bên dưới tạo một module gọi là Validator.ts và khai báo interface với tên là Validator :

export interface Validator { isValid(s: string): boolean
}

Trong module này, chúng ta đặt từ khóa export trước từ khóa interface để các modules có thể sử dụng nó.
Nếu bạn không sử dụng từ khóa export , thì interface Validator sẽ là kiểu private trong Validator.ts, do đó, bạn không thể sử dụng từ các modules khác.

Export statements

Để xuất một khai báo từ một module, ta sử dụng câu lệnh export . Ví dụ:

interface Validator { isValid(s: string): boolean
} export { Validator };

TypeScript cũng cho phép bạn thay đổi tên khái báo module như dưới:

interface Validator { isValid(s: string): boolean
} export { Validator as StringValidator };

Importing a new module

Để sử dụng một module, bạn sử dụng câu lệnh import. Ví dụ bên dưới tạo một module EmailValidator.ts và module này sử dụng module Validator.ts.

import { Validator } from './Validator'; class EmailValidator implements Validator { isValid(s: string): boolean { const emailRegex = /^[^\_@.com]_@.com[^\_@.com]+\.[^\_@.com]+$/; return emailRegex.test(s); }
} export { EmailValidator };

Khi bạn nhập một module, bạn có thể đổi tên nó như sau:

import { Validator as StringValidator } from './Validator';

Bên trong module EmailValidator , bạn có thể sử dụng interface Validator với tên thay thế là StringValidator :

import { Validator as StringValidator } from './Validator'; class EmailValidator implements StringValidator { isValid(s: string): boolean { const emailRegex = /^[^\_@.com]_@.com[^\_@.com]+\.[^\_@.com]+$/; return emailRegex.test(s); }
} export { EmailValidator };

Ví dụ sau minh họa cách sử dụng module EmailValidator trong tệp App.ts:

import { EmailValidator } from './EmailValidator'; let email = '_@.com';
let validator = new EmailValidator();
let result = validator.isValid(email); console.log(result);

Output:

true

Importing types

Code bên dưới khai báo một type gọi trong module Types.ts :

export type alphanumeric = string | number;

Để import type alphanumeric từ module Types.ts, bạn sử dụng câu lệnh import type:

import type {alphanumeric} from './Types';

Lưu ý rằng TypeScript đã hỗ trợ câu lệnh nhập từ phiên bản 3.8. Trước TypeScript 3.8, bạn cần sử dụng câu lệnh import để thay thế:

import {alphanumeric} from './Types';

Importing everything from a module

Để nhập mọi thứ từ một module, bạn sử dụng cú pháp sau:

import * from 'module_name';

Re-exports

Sau đây tạo một module mới có tên ZipCodeValidator.ts sử dụng mô-đun Validator.ts:

import { Validator } from './Validator'; class ZipCodeValidator implements Validator { isValid(s: string): boolean { const numberRegexp = /^[0-9]+$/; return s.length === 5 && numberRegexp.test(s); }
} export { ZipCodeValidator };

Bạn có thể gộp các module EmailValidator và ZipCodeValidator trong một module mới bằng cách kết hợp tất cả các lần exports của chúng theo cú pháp sau:

export * from 'module_name';

Ví dụ sau minh họa cách gộp các module EmailValidator.ts và ZipCodeValidator.ts trong module FormValidator.ts:

export * from "./EmailValidator";
export * from "./ZipCodeValidator";

Default Exports

Ví dụ:

import { Validator } from './Validator'; export default class ZipCodeValidator implements Validator { isValid(s: string): boolean { const numberRegexp = /^[0-9]+$/; return s.length === 5 && numberRegexp.test(s); }
}

Để import một bản default export, bạn sử dụng một cú pháp import như sau:

import default_export from 'module_name';

Sau đây là cách sử dụng default export từ ZipCodeValidator trong tệp App.ts:

import ZipCodeValidator from './ZipCodeValidator'; let validator = new ZipCodeValidator();
let result = validator.isValid('95134'); console.log(result);

Output:

true

Tóm tắt:

  • TypeScript chia sẻ cùng một khái niệm module với module ES6. Một module có thể chứa cả khai báo và code.
  • Trong một module, các biến, hàm, lớp, giao diện, v.v., thực thi trên phạm vi riêng của nó, không phải phạm vi toàn cục.
  • Sử dụng câu lệnh export để export các biến, hàm, lớp, giao diện, kiểu, v.v., từ một module.
  • Sử dụng câu lệnh import để truy cập các exports từ các mô-đun khác.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Type annotation vs Type Inference - Typescript

Trong bài viết này, chúng ta sẽ tìm hiểu kỹ về TypeScript bằng cách tìm hiểu sự khác biệt giữa kiểu chú thích và kiểu suy luận. Tôi sẽ cho rằng bạn có một số kinh nghiệm về JavaScript và biết về các kiểu cơ bản, như chuỗi, số và boolean.

0 0 32

- vừa được xem lúc

Type Annotation và Type Inference trong TypeScript là gì?

Khi làm việc với javascript chắc hẳn các bạn đã quá quen với việc dùng biến mà không cần phải quan tâm đến kiểu dữ liệu của nó là gì phải không? Đúng là mới đầu tiếp cận với Typescript mình cũng cảm thấy nó khá là phiền vì cần phải khai báo đủ type để nó chặt chẽ hơn. Lúc đó mình còn nghĩ: " JavaScr

0 0 25

- vừa được xem lúc

Tìm hiểu TypeScript và kiến thức cơ bản

TypeScript là gì. TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes, modules.

0 0 35

- vừa được xem lúc

TypeScript - P1: Vì sao TypeScript được yêu thích đến vậy?

Trải nghiệm thực tế. Trước khi là một Web Developer, tôi là một Mobile Developer và Java là thứ mà tôi từng theo đuổi.

0 1 58

- vừa được xem lúc

4 Tính năng rất hay từ TypeScript

Xin chào các bạn hôm nay mình xin chia sẽ những tính năng rất hay của TypeScript (TS), các bạn cùng tìm hiểu nhé. Ngoài việc set Type cho biến, tham số hay function thì ví dụ khi bạn nhìn vào một tham

0 0 82