LayaBox---TypeScript---基础数据类型

Posted 格拉格拉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LayaBox---TypeScript---基础数据类型相关的知识,希望对你有一定的参考价值。

一:TypeScript 基础类型

最简单的数据单元:数字,字符串,结构体,布尔值等

1.布尔值 boolean : true/false

布尔值-->   let isDone: boolean = false;

2.数字--> ts里所有数字都是浮点数,这些浮点数的类型是 number

let decLiteral: number = 6;           //十进制
let hexLiteral: number = 0xf00d;      //十六进制
let binaryLiteral: number = 0b1010;   //二进制
let octalLiteral : number = 0o744;    //八进制

3.字符串-->文本数据类型,可以使用双引号“aaa” 或单引号‘aaa’表示

let name: string = "bob";
name = "smith";

也可以使用模版字符串,它可以定义多行文本和内嵌表达式。并以$ 这种形式嵌入表达式

let name: string = 'Gene';
let age: number = 34;
let sentence: string = ‘Hello,my name is $ name . 
    I'll be $ age + 1 years old next month.';


与下面定义sentence的方式效果相同:

let scentence: string = "Hello, my name is" + name +".\\n\\n"+
    "I'll be" + (age +1)+ " years old next month.";

4.数组-->有2种定义方式:

第一种:在元素类型后面接[]
let list: number[] = [1,2,3];

第二种:使用数组泛型,Array<元素类型>
let list: Array<number> = [1,2,3];

5.元组--->允许表示一个已知元素数量和类型的数组。

let x: [string , number];

x = ['hello' , 10];

当访问一个已知索引的元素,会得到正确的类型:

console.log(x[0].substr(1)); //ok
console.log(x[1].substr(1));   //error, 'number' does not have 'substr'

6.enum枚举--> 像C#等语言一样,枚举类型可以为一组数值赋予友好的名字。

1.默认从0开始元素编号
enum Color

  Red,
  Green,
  Blue


let c: color = Color.Red;
--------------------------------------------------------------
2.也可以手动指定成员的数值,如从1开始编号:
enum Color

  Red = 1,
  Green,
  Blue


let c: color = Color.Red;
--------------------------------------------------------------
3.或者全部手动编号:
enum Color

  Red = 1,
  Green = 2,
  Blue = 4


let c: color = Color.Red;
----------------------------------------------------------------

枚举类型提供了一个便利,可以由枚举值得到它的名字。
enum Color

  Red = 1,
  Green,
  Blue

let colorName: string = Color[2];
console.log(colorName); //显示‘green’ 因为上面代码里它的值是2

7.Any--->当你为不确定类型的变量指定一个类型时,可以使用any类型来标记这些变量。

类型检查器不会对这些值进行检查,而是直接通过编译阶段的检查。

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;  


//当你只知道一部分数据的类型时,any类型也是有用的,比如,你有一个数组,它包含了不同类型的数据

let list: any[] = [1, true, "free"];

list[1] = 100;

---------------------------------------------------其他----------------------------------------------------------------------

1.Void类型

//当一个函数没有返回值时,使用void类型
function warnUser(): void

    console.log("This is my warning message");



//声明一个void类型的变量没什么用,因为你只能为它赋予 undefined 和 null
let unusable: void = undefined;

默认情况下 null 和 undefined 是所有类型的子类型,然而,当你指定了 --stricNullChecks标记,
null和undefined 只能赋值给void 和他们各自。

2.Never类型--> 表示的是那些永不存在的值的类型。

例如:never类型是哪些总是会抛出异常或根本就不会有返回值的函数表达式或箭头表达式的返回值类型。

never 类型是任何类型的子类型,可以赋值给任何类型;然而没有任何类型是never的子类型,或可以赋值给never类型(除了never本身之外)。即使any也不可以赋值给never。

//返回never的函数必须存在无法达到的终点
function error(message: string): never

    throw new Error( message );


//推断的返回值类型为never
function fail()

    return error("something failed");


//返回never的函数必须存在无法达到的终点
function infiniteLoop(): never

    while(true)
    
    

3.Object类型--->表示非原始类型,也就是除number,string,boolean,symbol,null 或 undefined之外的类型。

使用object类型,就可以更好的表示像 Object.create这样的API.

例如:
declare function create(o: object | null): void;

create(prop: 0);   //ok
create(null);        //ok

create(42);           //error
create("string");     //error 
create(false);        //error    
create(undefined);    //error

4.类型断言-----相当于其他语言的 强制类型转换

类型断言 有2种表现形式

let someValue: any = "this is a string";

1.‘尖括号’语法
let strLength: number = (<string>someValue).length;

2.as语法
let strLength: number = (someValue as string).length;

以上是关于LayaBox---TypeScript---基础数据类型的主要内容,如果未能解决你的问题,请参考以下文章

LayaBox---TypeScript---类型推论

LayaBox---TypeScript---声明合并

LayaBox---TypeScript---变量声明

LayaBox---TypeScript---三斜线指令

layaBox---TypeScript---接口

LayaBox---TypeScript---函数