Tôi có một biến.
abc:number|string;
Làm thế nào tôi có thể kiểm tra loại của nó? Tôi muốn làm một cái gì đó như dưới đây:
if (abc.type === "number") {
// do something
}
Tôi có một biến.
abc:number|string;
Làm thế nào tôi có thể kiểm tra loại của nó? Tôi muốn làm một cái gì đó như dưới đây:
if (abc.type === "number") {
// do something
}
Câu trả lời:
Đối với:
abc:number|string;
Sử dụng toán tử JavaScripttypeof :
if (typeof abc === "number") {
// do something
}
typeofTypeScript hiểu 🌹
Đây được gọi là bộ gõ.
Đối với các lớp học bạn sẽ sử dụng instanceofví dụ:
class Foo {}
class Bar {}
// Later
if (fooOrBar instanceof Foo){
// TypeScript now knows that `fooOrBar` is `Foo`
}
Ngoài ra còn có các loại bảo vệ khác, ví dụ: invv https://basarat.gitbooks.io/typescript/content/docs/types/typeGuard.html
Tôi muốn thêm rằng TypeGuards chỉ hoạt động trên chuỗi hoặc số, nếu bạn muốn so sánh một đối tượng, hãy sử dụng instanceof
if(task.id instanceof UUID) {
//foo
}
classes nhưng không phải với TypeScript interfaces hoặc types, vì chúng không tồn tại trong tệp JavaScript được xuất.
Tôi đã kiểm tra một biến xem nó có phải là boolean hay không như bên dưới
console.log(isBoolean(this.myVariable));
Tương tự, chúng tôi có
isNumber(this.myVariable);
isString(this.myvariable);
và như thế.
instanceof
utilđể truy cập các chức năng này (ví dụ:import { isString } from 'util';
Các câu trả lời khác là đúng, nhưng khi xử lý các giao diện, bạn không thể sử dụng typeof hoặc instanceof vì các giao diện không được biên dịch sang javascript.
Thay vào đó, bạn có thể sử dụng trình đánh chữ kiểm tra chức năng + typecast để kiểm tra biến của bạn:
interface Car {
drive(): void;
honkTheHorn(): void;
}
interface Bike {
drive(): void;
ringTheBell(): void;
}
function start(vehicle: Bike | Car ) {
vehicle.drive();
// typecast and check if the function exists
if ((<Bike>vehicle).ringTheBell) {
const bike = (<Bike>vehicle);
bike.ringTheBell();
} else {
const car = (<Car>vehicle);
car.honkTheHorn();
}
}
Và đây là JavaScript được biên dịch trong ES2017:
function start(vehicle) {
vehicle.drive();
if (vehicle.ringTheBell) {
const bike = vehicle;
bike.ringTheBell();
}
else {
const car = vehicle;
car.honkTheHorn();
}
}
instanceofmặc dù đó không phải là câu hỏi được hỏi.