TypeScript 与 JavaScript 的区别(TypeScript万字基础入门,了解TS,看这一篇就够了)

let list: any[] = [‘leo’,25,true];

list[1] = ‘lion’;

NullUndefined

null,在 JavaScript 中 null 表示 “什么都没有”。null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

undefined,在 JavaScript 中, undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,即其他类型可以转成这两种类型,如字符串类型,此时,赋值后的类型会变成 null 或 undefined。

let num: number;

num = 1; // 运行正确

num = undefined; // 运行正确,此时为undefined类型

num = null; // 运行正确,此时为null类型

Never

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环),示例代码如下:

let n: never;

let num: number;

// 运行错误,数字类型不能转为never类型

n = 123;

// 运行正确,never 类型可以赋值给never类型

n = (()=>{ throw new Error(‘exception’)})();

// 运行正确,never 类型可以赋值给数字类型

num = (()=>{ throw new Error(‘exception’)})();

// 返回值为never的函数可以是抛出异常的情况

function error(message: string): never {

throw new Error(message);

}

// 返回值为never的函数可以是无法被执行到的终止点的情况

function loop(): never {

while (true) {}

}

TypeScript变量声明

TypeScript 变量的命名规则:

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

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

3、变量名不能以数字开头。

以下为四种声明变量的方式

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

var uname:string = “leo”;

//var [变量名] : [类型]; 声明变量的类型,但没有初始值,变量值会设置为undefined

var uname:string;

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

var uname = “leo”;

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

var uname;

//总结:声明时,没有类型,类型就是any;没有初始值,初始值就是undefined

实例:

var uname:string = “leo”;

var age:number = 25;

//对应js

var uname = “leo”;

var age = 25;

TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译错误,而JavaScript则不会,因为她是弱类型语言,如下实例:

var num:number = “leo” // 编译错误

//对应的js

var num = 100

num = “leo” // 编译不报错

类型推断

当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

var num = 100; // 类型推断为 number

num = “leo”; // 编译错误,相当于上例 var num:number = “leo”

变量作用域

TypeScript 有以下几种作用域:

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

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

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

如以下例子:

var global_num = 10 // 全局变量

class Person {

age = 18; // 实例变量

static score = 100; // 静态变量

eat():void {

var food = ‘apple’; // 局部变量

}

}

console.log("全局变量为: " + global_num)

console.log(Person.score) // 静态变量,直接通过类名访问

var person = new Person();

console.log("实例变量: " + person.age)

TypeScript的运算符、条件语句、循环与JavaScript基本一致。

TypeScript函数

function function_name()

{

// 执行代码

}

//调用函数

function_name()

函数返回值

TypeScrip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值