字符串 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串(字符数组即元素为字符的数组)。并且将\0作为结束标志。 字符串定义 char string[10]; 因为最后一位string[9]要留给\0,所以对于string来说,有效位应该是9位。 char string[] = {'a', 'b', 'c', 'd'}; // 此时空间长度为4,只是字符数组 char string[] = "abcd"; // 此时真正的空间长度是5,系统自动加了\0 从上面 ...
类类型 类本身就是一种类型,类的名字可以直接作为类型名: // 定义类 class TypeA { // ... } // 声明TypeA类型 let a: TypeA; // 赋值TypeA类型 a = new TypeA(); 语法扩展 属性扩展 在ES6中,实例属性和静态属性不能直接定义在类内部: ```javascript // 下面是ES6代码 // 不合法的定义 class Greeter { // 错误,实例属性不能定义在类里 greeting = 'world'; // 错误,静态属性不能定义 ...
数字类型 数字类型关键字为 number ,所有数字都是浮点数 let intLiteral: number = 6; let floatLiteral: number = 3.1415; 布尔类型 布尔类型关键字为 boolean,仅有两个值 true 和 false let isDone: boolean = false; isDone = true; 字符串类型 字符串类型关键字为 string ```typescript let name: string ...
枚举类型 通过以下语法可以定义新的枚举类型: enum T { ... } 其中 T 是任意定义的名字,省略号 ... 表示可以定义一个或多个可以显式初始化的枚举值。如: enum Direction { Up, // 值默认为 0 Down, // 值默认为 1 Left, // 值默认为 2 Right // 值默认为 3 } 上述语句定义了新的枚举类型关键字 Direction,现在可以用这个关键字声明新的枚举类型: ```typescript // 声明d为枚举类型Dir ...
数组类型 数组类型的语法为: T[] 其中 T 可以是任何类型,代表的是数组的元素类型 let list: number[] = [1, 2, 3]; // 二维数组 let vec: number[][] = [[1, 2, 3], [1, 2, 3]]; 元组类型 元组和数组类似,只不过元组是一种固定长度的数组,每个元素有自己的类型。元组(Tuple)的语法为: [T0, T1, ...] T0, T1代表任意类型,省略号表示可以有任意多个元素。 ```typescript ...
对象类型 对象类型是TypeScript的类型系统中最复杂也是最重要的类型,对象类型主要用来描述复杂数据类型: // 声明一个值为对象字面量 let man = {name: 'joye', age: 30}; // 等价于 let man: {name: string; age: number} = {name: 'joye', age: 30}; 在上例第一条语句中,实际上变量 man 会被自动推导为类型 {name: string; age: number},它描述了一个对象具有字符串类型的 name 属性和数字类型的 ...
外部声明 外部声明一般针对第三方来历不明的库,当你想要在你的typescript项目中使用用javascript代码写的第三方库时,就需要用到外部声明。一个常见的例子,假设我们在HTML中通过script标签引入了全局jQuery: // 注册全局变量 $ <script src="path/to/jquery.js"></script> path/to/jquery.js 文件在会在全局作用域中引入对象 $,接下来如果在同一项目下的TypeScript文件中使用 $,TypeScript编译器会报错: ```typescript // ...
空间拆分 命名空间可以拆分,当命名空间代码量很大时,拆分可以提高可维护性: // 拆分成第一块 namespace ns { let a = 1; } // 拆分成第二块 namespace ns { let b = 2; } 但要注意,虽然 ns 被拆分成两个代码块了,但这两个代码块之间的成员无法互相访问: ```typescript namespace ns { let a = 1; } namespace ns { // 错误,error TS2339: Property 'a' does not exist o ...
交叉类型 语法: T1 & T2 & ... 交叉类型是将多个类型合并为一个总的类型,它包含了多个类型的所有特性,类似于编程逻辑中的 且 操作 interface Bird { fly(): void; } interface Dog { run(): void; } // 同时具有Bird的fly和Dog的run特征 class Animal { fly(){} run(){} } // 正确 let animal: Bird & Dog = new Animal(); 联合 ...
内部声明 到目前为止,所有在TypeScript源码中出现的声明,都是内部声明: ```typescript // 声明a为一个数字 let a: number; // 声明b为一个数字并初始化为2 let b: number = 2; // 声明T为一个接口 interface T {} // 声明接口类型变量b let b: T; // 声明fn为一个函数 function fn(){} // 声明myFunc为一个函数 // 此处利用了类型推导 let myFunc = function(a: number){} // 声明MyEnum枚举类型 enum MyEnum { ...