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

Tiếp tục về Typescript hay ho nè: Funtion Syntaxes

0 0 3

Người đăng: Nguyen Xuan Vinh

Theo Viblo Asia

Chào mọi người, chưa gì đã đến ngày 20 rồi, nên lại phải viết bài nè hi, đùa tí chứ viết bài cũng thú vị lắm ạ ?, hôm nay mình sẽ chia sẻ với các bạn về cách để sử dụng TS trong function, có thể nói đây là một bài thực hành thay vì lý thuyết như ở bài trước. À bạn nào chưa đọc bài trước về 4 Tính năng rất hay từ TypeScript thì các bạn tham khảo để hiểu thêm, các bạn xem ở ĐÂY ha.

Đối với các bạn mới tìm hiểu về TS các bạn có hay gặp vấn đề này giống mình hông nhỉ? Đó là lúc mói học TS cảm thấy khó nhai lắm, học xong lý thuyết rồi, xong vào code thử thì hông biết code từ đâu. Nhất là hông biết phải đặt type cho biến như thế nào, rồi lỗi từa lưa làm mình cũng nản thiệt, nhưng mà được cái Coder như tụi mình thì có quyết tâm lắm nên thôi cứ chơi tới rồi cũng biết hết thôi!!!

Rồi zô nào!

Function declarations

Bên dưới mình khai báo một hàm đơn giản và đặt type cho 2 tham số a và bnumber.

function sum(a: number, b: number) { return a + b
}

Tiếp theo, sử dụng lại đoạn code trên bạn có thể thấy hàm return, nên giờ mình sẽ ràng buộc type trả về của hàm.

function sum(a: number, b: number): number { return a + b
}

Cũng dể phải hông ạ, các bạn vào dự án hoặc cứ code luyện tập là quen thôi, mình thì hay có suy nghĩ như vầy, khi mà mình thấy khó thì chẳng qua là mình chưa quen với nó thôi chứ quen rồi thì làm gì cũng được cũng dể thôi. Giống như việc tán gái vậy mới đầu khó sau này thì dể xơi lắm kkkk

Funtion Expression

Funtion Expression hay còn gọi là biểu thức hàm nó được khai báo bằng const hoặc let

Những cách viết này cũng dể hiểu giống như Function declarations nhưng bạn chỉ cần viết lại bằng Funtion Expression

// named function
const sum = function sum(a: number, b: number): number { return a + b
} // annonymous function
const sum = function (a: number, b: number): number { return a + b
} // arrow function
const sum = (a: number, b: number): number => { return a + b
} // implicit return
const sum = (a: number, b: number): number => a + b const sum = (a: number, b: number): {result: number} => ({result: a + b})

Bạn cũng có một cách viết như này, nhưng cách viết này mình cảm thấy hơi khó đọc.

const sum: (a: number, b: number) => number = (a, b) => a + b

Để dể đọc hơn bạn có thể dùng Type hoặc Interface

type MathFn = { (a: number, b: number): number
}
const sum: MathFn = (a, b) => a + b type MathFn = { (a: number, b: number): number operator: string
}
const sum: MathFn = (a, b) => a + b
sum.operator = '+' interface MathFn { (a: number, b: number): number operator: string
}
const sum: MathFn = (a, b) => a + b
sum.operator = '+'

Rồi bạn đã nghe đến declare function và declare namespace chưa nhỉ, bạn cũng có thể thực hiện với nó đấy. Nó sẽ tạo cho bạn một name và type và sử dụng nó bằng cách sử dụng từ khóa typeof để chỉ định type cho function. Bạn sẽ ít sử dụng 2 thằng này vì nó chỉ hay sử dụng ở các thư viện thôi.

Nếu chọn để sử dụng thì mình sẽ chọn Type và Interface thôi, sử dụng Type cho chính nó, còn Interface khi bạn muốn kế thừa.

declare function MathFn(a: number, b: number): number
declare namespace MathFn { let operator: '+'
}
const sum: typeof MathFn = (a, b) => a + b
sum.operator = '+'

Optional/Default params

Optional parameter

Để ý đoạn code bên dưới, bạn có để ý tham số b?: number, nó đang ngầm hiểu rằng tham số b có thể được truyền vào hoặc không và nó có typenumber hoặc undefined.

const sum = (a: number, b?: number): number => a + (b ?? 0)

Tương tự như khi bạn sử dụng Unions

const sum = (a: number, b: number | undefind): number => a + (b ?? 0)

Default params

Và đây là khi bạn đặt tham số mặc định.

const sum = (a: number, b: number = 0): number => a + b
sum(1) // results in 1
sum(2, undefined) // results in 2

Với Type

type MathFn = (a: number | undefined, b: number) => number
const sum: MathFn = (a = 0, b) => a + b

Rest params

Rest params là một tính năng rất hay của JS nó giúp bạn nhóm các giá trị vào trong một Array

Thực hiện nó như sau:

const sum = (a: number = 0, ...rest: Array<number>): number => { return rest.reduce((acc, n) => acc + n, a)
}

Có nghĩa rằng ...rest là một array và các phần tử trong nó đều có type = number

Tổng kết

Trên đây là những cách mà mình đã liệt kê và hy vọng sẽ giúp các bạn mới tìm hiểu về TS sẽ rõ hơn và sẽ có thêm kiến thức bổ ích, cảm ơn các bạn đã xem bài viết ❤️

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 502

- 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