对象类型定义

在 TypeScript 中,对象类型定义是通过接口(interface)来实现的。它们允许你定义一个对象的形状,包括属性和方法。 下面是一些基本的示例: interface Animal { species: string; age: number; makeSound: () => void; } const dog: Animal = { species: "Dog", age: 5, makeSound() { console.log("Woof!"); } }; 使用 interface 定义可选属性和只读属性: interface Car { make: string; model: string; year?: number; // 可选属性 readonly vin: string; // 只读属性 } const car: Car = { make: "Toyota", model: "Corolla", vin: "1HGCM82633A123456" }; 使用 interface 定义任意属性: interface User { id: number; name: string; [key: string]: any; // 任意属性 } const user: User = { id: 1, name: "Alice", age: 30, isAdmin: true }; 需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集: interface User { id: number; name: string; [key: string]: string; } const user: User = { id: 1, name: "Alice", age: 30, isAdmin: true }; // Property 'id' of type 'number' is not assignable to 'string' index type 'string'. // Type 'number' is not assignable to type 'string'. // Type 'boolean' is not assignable to type 'string'. 上面的例子任意属性的类型为 string,但是 id 的类型为 number,这会导致类型不匹配的错误。 ...

June 22, 2025

数据类型

JavaScript 中的有两种数据类型,分别为原始数据类型和对象数据类型。 原始数据类型包括: 布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol 和 ES10 中的新类型 BigInt。 布尔值 在 TypeScript 中,使用 boolean 定义布尔值类型: let isDone: boolean = false; 但是如果调用构造函数来创建布尔值,则会得到一个对象,而不是布尔值: let isDone: Boolean = new Boolean(1); console.log(typeof isDone); // "object" 直接调用 Boolean 函数也会得到一个布尔值: let isDone: boolean = Boolean(1); console.log(typeof isDone); // "boolean" 数值 使用 number 定义数值类型: let decLiteral: number = 6; let hexLiteral: number = 0xf00d; // ES6 中的二进制表示法 let binaryLiteral: number = 0b1010; // ES6 中的八进制表示法 let octalLiteral: number = 0o744; let notANumber: number = NaN; let infinityNumber: number = Infinity; 编译结果: let decLiteral = 6; let hexLiteral = 0xf00d; // ES6 中的二进制表示法 let binaryLiteral = 0b1010; // ES6 中的八进制表示法 let octalLiteral = 0o744; let notANumber = NaN; let infinityNumber = Infinity; 字符串 使用 string 定义字符串类型: let myName: string = 'Tom'; let myAge: number = 25; // 模板字符串 let sentence: string = `Hello, my name is ${myName}. I'll be ${myAge + 1} years old next month.`; console.log(sentence); 编译结果: ...

June 22, 2025