TypeScript一

简介: JavaScript开发迅速但维护成本高,适合小型项目,因其动态类型导致编辑器提示不全。TypeScript是JS超集,增加了类型系统,提高开发效率和代码质量。安装TypeScript需先安装Node.js,然后通过npm安装tsc。案例演示创建`.ts`文件,转换成`.js`并运行。TypeScript支持多种数据类型,如any、number、string等,并有严格变量声明和函数定义规则,包括函数重载和匿名函数。

在学习ts之前,先聊一下js,js开发起来快,但是维护起来的成本会高,不适合开发大型的项目,js中没有变量类型,例如let a = 10,10是num,但是a是没有变量类型的,它只是一个局部变量,想存什么,存什么,你在其他地方又把a赋值了一个字符串,但是到头来你想拿a去做运算,那么这个时候就会发生隐患事故了,js不报错。js中定义函数,函数的参数也是没有类型,参数做运算,这个时候就会发生错误了,js是一个动态类型,无论是webstorm 还是vscode,它的提示都不是很完善,因为编辑器不知道它的变量类型。那么js是怎么来的呢,是微软和网景两大公司大战时,网景公司为了开发出的我有你没有的商业份额,天下武功唯快不破,因此js十天左右诞生了,微软公司近几年干的好事就是开发出来了vscode免费供开发者使用,开发出ts更加灵活使用,还有放弃了IE内核转而拥抱了chorm内核
TS并不是取代js,而是在javascirpt为基础构建的语言,即是js的超集,什么是超集,就是js有的,ts也有,但是ts在js的基础上又添加了其他

学习TypeScript先从安装开始
@[toc]

一、安装

  • 先安装nodejs:https://nodejs.org/dist/v14.15.1-x64.msi
  • 更换npm源:npm config set registry https://registry.npmmirror.com
  • 安装 typescript:npm install -g typescript
  • 安装完成后我们可以使用 tsc 命令来执行 TypeScript 的相关代码,以下是查看版本号:$ tsc -v

    二、案例切入

  1. 新建一个 app.ts 的文件,代码如下:
var message:string = "Hello World" 
console.log(message)

通常我们使用 .ts 作为 TypeScript 代码文件的扩展名。

  1. 转换为js
    然后执行以下命令将 TypeScript 转换为 JavaScript 代码:
tsc app.ts
  1. 执行编译
    使用 node 命令来执行 app.js 文件:
$ node app.js

在这里插入图片描述
在这里插入图片描述

三、语法

1、数据类型

数据类型 描述
任意类型 any 声明为 any 的变量可以赋予任意类型的值。
数字类型 number let binaryLiteral: number = 0b1010; // 二进制 let octalLiteral: number = 0o744; // 八进制 let decLiteral: number = 6; // 十进制let hexLiteral: number = 0xf00d; // 十六进制
字符串类型 string let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
布尔类型 boolean let flag: boolean = true;
数组类型 let arr: number[] = [1, 2];// 在元素类型后面加上[]
元组 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。let x: [string, number]; x = ['Runoob', 1]; // 运行正常 x = [1, 'Runoob']; // 报错
枚举 enum enum Color {Red, Green, Blue}; let c: Color = Color.Blue; console.log(c); // 输出 2
void function hello(): void {alert("Hello Runoob");}
null 表示对象值缺失
undefined 用于初始化变量为一个未定义的值
never never 是其他类型(包括 null 和 undefined)的子类型,代表从不会出现的值

==注意==:TypeScript 和 JavaScript 没有整数类型。

2、变量声明

TypeScript 变量的命名规则:

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

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

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

  1. 声明变量的类型及初始值:var [变量名] : [类型] = 值;
var uname:string = "Runoob";
  1. 声明变量的类型,但没有初始值,变量值会设置为 undefined:var [变量名] : [类型];
var uname:string;
  1. 声明变量并初始值,但不设置类型,该变量可以是任意类型:var [变量名] = 值;
var uname = "Runoob";
  1. 声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined:var [变量名];
var uname;

3、函数定义

3.1、函数定义

可选参数使用问号标识 ?

```javascript
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}

let result1 = buildName("Bob"); // 正确
let result2 = buildName("Bob", "Adams", "Sr."); // 错误,参数太多了
let result3 = buildName("Bob", "Adams"); // 正确


### 3.2、匿名函数

```javascript
var res = function(a:number,b:number) { 
    return a*b;  
}; 
console.log(res(12,2))

3.3、匿名函数自调用

(function () {
   
    
    var x = "Hello!!";   
    console.log(x)     
 })()

3.4、构造函数

var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);

3.5、递归函数

通俗理解:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"

function factorial(number) {
   
   
    if (number <= 0) {
   
            // 停止执行
        return 1; 
    } else {
   
        
        return (number * factorial(number - 1));     // 调用自身
    } 
}; 
console.log(factorial(6));      // 输出 720

3.6、Lambda 函数

var foo = (x:number)=>10 + x 
console.log(foo(100))      //输出结果为 110

3.7、函数重载

重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

function disp(s1:string):void; 
function disp(n1:number,s1:string):void; 

function disp(x:any,y?:any):void {
   
    
    console.log(x); 
    console.log(y); 
} 
disp("abc") 
disp(1,"xyz");
相关文章
|
6月前
|
JavaScript 前端开发 安全
TypeScript五
TypeScript是面向对象的JavaScript超集,支持类、接口等OOP特性。类通过`class`定义,包括字段、构造函数和方法。例如,`Car`类有`engine`字段、构造函数和`disp`方法。类间可实现继承,如`Circle`继承`Shape`。TypeScript不支持多重继承,但允许多重继承链。`static`关键字定义静态成员,`instanceof`检查对象类型,访问控制修饰符(public, protected, private)管理访问权限。类能实现接口,如`AgriLoan`实现`ILoan`。 TypeScript对象是类型实例,
|
1月前
|
JavaScript 安全
TypeScript使用真的很麻烦吗?
TypeScript使用真的很麻烦吗?
27 3
|
5月前
|
自然语言处理 JavaScript
typescript let
typescript let
|
6月前
|
JavaScript 前端开发
TypeScript二
JavaScript Number对象包含多种方法,如`toExponential()`将数值转化为指数形式,`toFixed()`保留指定位数的小数,`toLocaleString()`按本地格式显示数字,`toPrecision()`格式化数字到指定长度,`toString()`以指定基数表示数字,而`valueOf()`返回原始数值。此外,示例中还展示了Date对象的格式化方法。对于String对象,有`constructor`返回创建对象的函数,`length`获取字符串长度,`prototype`用于扩展对象,以及一系列如`charAt()`、`indexOf()
|
JavaScript 前端开发 编译器
30分钟速成TypeScript
30分钟速成TypeScript
|
JavaScript
【TypeScript理解】
【TypeScript理解】
|
JavaScript 前端开发 编译器
TypeScript使用技巧
TypeScript使用技巧
66 0
|
JavaScript
TypeScript(一)
TypeScript(一)