TS学习2 TS 基本语法-ts2

TypeScript 基础语法

  1. TypeScript 程序由以下几个部分组成:
  • 模块
  • 函数
  • 变量
  • 语句和表达式
  • 注释

TypeScript 基础类型

数据类型 关键字 描述
任意类型 any 声明为 any 的变量可以赋予任意类型的值。
数字类型 number 双精度 64 位浮点值。它可以用来表示整数和分数。
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
字符串类型 string 一个字符系列,使用单引号(’)或双引号(")来表示字符串类型。反引号()来定义多行文本和内嵌表达式。
let name: string = "Runoob";
let years: number = 5;
let words: string =
您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
布尔类型 boolean 表示逻辑值:true 和 false。
let flag: boolean = true;
数组类型 无
声明变量为数组。
// 在元素类型后面加上[]
let arr:
number[] = [1, 2];
// 或者使用数组泛型
let arr: Array = [1, 2];
元组 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x: [string, number];
x = [‘Runoob’, 1]; // 运行正常
x = [1, ‘Runoob’]; // 报错
console.log(x[0]); // 输出 Runoob
枚举 enum 枚举类型用于定义数值集合。
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log©; // 输出 2
void void
用于标识方法返回值的类型,表示该方法没有返回值。
function hello(): void {
alert(“Hello Runoob”);
}
null null 表示对象值缺失。
undefined undefined 用于初始化变量为一个未定义的值
never never never 是其它类型(包括 null 和ndefined)的子类型,代表从不会出现的值。

TypeScript 变量声明

变量是一种使用方便的占位符,用于引用计算机内存地址。我们可以把变量看做存储数据的容器。

TypeScript 变量的命名规则:

  • 变量名称可以包含数字和字母。

  • 除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。

  • 变量名不能以数字开头。

  • 变量使用前必须先声明,我们可以使用 var 来声明变量。

我们可以使用以下四种方式来声明变量:

  • 声明变量的类型及初始值:
var [变量名] : [类型] = 值;

例如:

var uname:string = "万类霜天竞自由";
  • 声明变量的类型及但没有初始值,变量值会设置为 undefined:
var [变量名] : [类型];

例如:

var uname:string;
  • 声明变量并初始值,但不设置类型类型,该变量可以是任意类型:
var [变量名] = 值;

例如:

var uname = "Runoob";
  • 声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined:
var [变量名];

例如:

var uname;

类型断言(Type Assertion)

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。及强语言中的类型强转

语法格式:

<类型>值
或:
值 as 类型

实例

var str = '1' 
var str2:number =   str   //str、str2 是 string 类型
console.log(str2)

TypeScript 是怎么确定单个断言是否足够
当 S 类型是 T 类型的子集,或者 T 类型是 S 类型的子集时,S 能被成功断言成 S。这是为了在进行类型断言时提供额外的安全性,完全毫无根据的断言时危险的,如果你想这么做,你可以使用 any。

它之所以不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法,同时,它也是一种为编译器提供关于如何分析代码的方法。

编译后,以上代码会生成如下 JavaScript 代码:

var str = '1';
var str2 = str;  //str、str2 是 string 类型
console.log(str2);
执行输出结果为:
1

类型推断

  • 当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。

  • 如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

var num = 2;    // 类型推断为 number
console.log("num 变量的值为 "+num); 
num = "12";    // 编译错误
console.log(num);

第一行代码声明了变量 num 并=设置初始值为 2。 注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。

第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。因为变量已经设置为了 number 类型。

error TS2322: Type '"12"' is not assignable to type 'number'.

变量作用域

  1. 变量作用域指定了变量定义的位置。

  2. 程序中变量的可用性由变量作用域决定。

TypeScript 有以下几种作用域:

  • 全局作用域 − 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。

  • 类作用域 − 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。

  • 局部作用域 − 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。

var global_num = 12          // 全局变量
class Numbers { 
   num_val = 13;             // 类变量
   static sval = 10;         // 静态变量
   
   storeNum():void { 
      var local_num = 14;    // 局部变量
   } 
} 
console.log("全局变量为: "+global_num)  
console.log(Numbers.sval)   // 静态变量
var obj = new Numbers(); 
console.log("类变量: "+obj.num_val)

运算符

运算符 描述 例子 x 运算结果 y 运算结果
+ 加法 x=y+2 7 5
- 减法 x=y-2 3 5
* 乘法 x=y*2 10 5
/ 除法 x=y/2 2.5 5
% 取模(余数) x=y%2 1 5
++ 自增 x=++y 6 6
自减 x=–y 4 4

关系运算符

  • 关系运算符用于计算结果是否为 true 或者 false。x=5,下面的表格解释了关系运算符的操作:
运算符 描述 比较 返回值
== 等于 x==8 false
== 等于 x==5 true
!= 不等于 x!=8 true
> 大于 x>8 false
< 小于 x<8 true
>= 大于或等于 x>=8 false
<= 小于或等于 x<=8 true

逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。给定 x=6 以及 y=3,下表解释了逻辑运算符:

运算符 描述 例子
&& and (x < 10 && y > 1) 为 true
|| or (x==5
! not !(x==y) 为 true

位运算符

位操作是程序设计中对位模式按位或二进制数的一元和二元操作。

运算符 描述 例子 类似于 结果 十进制
& AND,按位与处理两个长度相同的二进制数,两个相应的二进位都为 1,该位的结果值才为 1,否则为 0。 x = 5&1 0101 & 0001 0001 0001
| OR,按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为 1,该位的结果值为 1。 x = 5 1 0101 0001 0101 5
~ 取反,取反是一元运算符,对一个二进制数的每一位执行逻辑反操作。使数字 1 成为 0,0 成为 1。 x = ~ 5 ~0101 1010 -6
^ 异或,按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作。操作的结果是如果某位不同则该位为 1,否则该位为 0。 x = 5 ^ 1 0101 ^ 0001 0100 4
<< 左移,把 << 左边的运算数的各二进位全部左移若干位,由 << 右边的数指定移动的位数,高位丢弃,低位补 0。 x = 5 << 1 0101 << 1 1010 10
>> 右移,把 >> 左边的运算数的各二进位全部右移若干位,>> 右边的数指定移动的位数。 x = 5 >> 1 0101 >> 1 0010 2
>>> 无符号右移,与有符号右移位类似,除了左边一律使用0 补位。 x = 2 >>> 1 0010 >>> 1 0001 1

三元运算符 (?)

三元运算有 3 个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

Test ? expr1 : expr2

typeof 运算符

typeof 是一元运算符,返回操作数的数据类型。

查看以下实例:

var num = 12 
console.log(typeof num);   //输出结果: number

其他运算符

负号运算符(-) ,更改操作数的符号,查看以下实例:

var x:number = 4 
var y = -x; 
console.log("x 值为: ",x);   // 输出结果 4 
console.log("y 值为: ",y);   // 输出结果 -4

你可能感兴趣的:(TypeScript,TS)