TypeScript基础知识(一)--基础类型

1、Boolean类型

布尔类型有true、false两个值。

let Bool1: boolean = false;
let Bool2: boolean = true;

2、Number类型

let isNumber: number = 123456;

3、String类型

let isString: string = 'hello';

还可以使用模板字符串表示:

let isString: string = 'hello';
let isNumber: number = 123;
两种写法:
第一种:
let isStrNum: string = `${isString}--${isNumber}`;   //"hello--123" 
第二种:
let isStrNum1: string = 'aaa'+isString+'bbbb'+isNumber;    //"aaahellobbbb123" 

4、Null 和Undefined

默认情况下nullundefined是所有类型的子类型。 就是说你可以把 nullundefined赋值给number类型的变量


将null和undefined赋值给其他类型:
let str: string = 'hello';
let num: number = 123;
num = undefined;
str = null;
console.log(num,str); //undefined,  null 

但是在配置了strictNullChecks: true 后null和undefined只能赋值给void和它们各自
//Type 'undefined' is not assignable to type 'number'
num = undefined;

5、Object

object表示非原始类型

let obj: object = { a: 123 };
obj = { b: 456 };  //{ "b": 456 }
obj = 123;    //Type 'number' is not assignable to type 'object'. (2322)
obj = 'hello';    //Type 2322
boj = true;       //Type 2322

6、Any(任意值)

在 TypeScript 中,任何类型都可以被归为 any 类型,任何类型都可以赋值给any类型。

普通数据类型进行赋值:
let str: string = 'hello';
str = 123;   //Type 'number' is not assignable to type 'string'
any类型进行赋值:
let str: any = 'hello';
str = 123;
console.log(str); //123
当一个数组由各种类型的时候也可以用any类型
let arr: any[] = [1, 'hello', true];

7、类型推论

如果没有明确的指定类型、typeScript会依照类型推论的规则推断出一个类型 

以下代码没有指定类型,但typeScript会推断类型
let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;   //Type 'number' is not assignable to type 'string'.(2322)

 等价于:

let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;  //Type 'number' is not assignable to type 'string'.(2322)

typeScript在没有指定一个明确的类型的时候就会推断出一个类型,这就是:类型推论 

如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查

let myFavoriteNumber;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
myFavoriteNumber = { hello: 'world'};
console.log(myFavoriteNumber);   // { hello: 'world'}

8、Void (空值)

当一个函数没有返回值时,你通常会见到其返回值类型是 void

在函数没有返回值时使用
 function voidFun(): void {
       console.log('hello');
}; 
声明一个void类型的变量,只能赋值null和undefined (没有配置strictNullChecks的情况下)
let a: void = undefined;

9、数组类型

 有两种方式可以定义数组:

第一种在元素类型后面加上[],表示由此类型元素组成的数组。
let numList: number[] = [1, 2, 3];
let strList: string[] = ['hello', 'world'];
第二种数组泛型,Array<元素类型>
let list: Array<number> = [1, 2, 3];
any在数组用应用,表示数组中出现任意类型
let anyList: any[] = [1, 'hello', { world: 'my'}];

 10、元祖 Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

let x: [string, number] = ['hello', 123];

let arr: [string, number] = ['hello', 123];

arr[0] = 'world';  // OK

arr[1] = 789;    // OK

console.log(arr) //["world", 789] 

但是当直接对元组类型的变量进行初始化或者赋值的时候,需要提供所有元组类型中指定的项。

let arr: [string, number];

只对其中一项进行赋值会报错:

arr = ['hello'];  // Error
// Type '[string]' is not assignable to type '[string, number]'.
// Source has 1 element(s) but target requires 2

arr = ['hello', 123]; // OK

 需要根据元祖中的指定类型进行赋值:

let arr: [string, number];

arr = ['hello', 123]; // OK

重新赋值:

arr = [123, 'hello'] // Error
// Type 'number' is not assignable to type 'string'.(2322)
// Type 'string' is not assignable to type 'number'.(2322)

越界元素:

当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型:

let arr: [string, number] = ['hello', 123];

arr.push('world');  // OK, 字符串可以赋值给(string | number)类型

arr.push(true);   // Error

//Argument of type 'boolean' is not assignable to parameter of type 'string | number'.(2345)

11、联合类型

联合类型表示取值可以为多种类型中的一种

这里的 let myFavoriteNumber: string | number 的含义是
允许 myFavoriteNumber 的类型是 string 或者 number,但是不能是其他类型。

let myFavoriteNumber: string | number;

myFavoriteNumber = 'hello'; // OK

myFavoriteNumber = 123;  // OK

myFavoriteNumber = true; // Error
// Type 'boolean' is not assignable to type 'string | number'

联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:

let myFavoriteNumber: string | number;

myFavoriteNumber = 'seven';

console.log(myFavoriteNumber.length); // 5

myFavoriteNumber = 7;

这里类型被推断成了number,所以length属性会报错
console.log(myFavoriteNumber.length);  // Error
// Property 'length' does not exist on type 'number'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值