Equality narrowing là gì?

Noun Programming Typescript

Trong lập trình (programming) cụ thể là trong Typescript, equality narrowing là một loại của narrowing. Trong equality narrowing, nếu hai biến (variable) bằng nhau, thì kiểu dữ liệu của cả hai biến phải giống nhau. Nếu một biến thuộc kiểu dữ liệu không cụ thể (tức là không xác định (unknown), any, v.v.) và bằng với một biến khác thuộc kiểu dữ liệu cụ thể, thì Typescript sẽ sử dụng thông tin đó để thu hẹp kiểu dữ liệu của biến đầu tiên.

Ví dụ hàm sau nhận hai tham số (parameter): x và y, với x là một chuỗi (string) hoặc một số và y là một số. Khi giá trị của x bằng giá trị của y, thì kiểu của x được suy ra là một số và ngược lại là một chuỗi.


function someFunction(x: string | number, y: number) {
    if(x === y) {
        // narrowed to number
        console.log(typeof x) // number
    } else {
        // this is not narrowed
        console.log(typeof x) // number or string
    }
}

Learning English Everyday