typescript的语法和使用

本文深入讲解TypeScript的基础数据类型、数组、元组、枚举、void等类型,以及变量声明、类型断言、运算符、条件和循环、foreach循环、函数参数和返回值类型定义,包括可选参数、默认参数、剩余参数、匿名函数、箭头函数和方法重载。

typescript是javascript的一个超集,使用typescript编写的,最后还是会转化为javascript去执行。

基本数据类型
  • 数字型:number
  • 字符型:string
    字符可以使用单引号或者双引号,多行字符可以使用``,这个也可以够成格式化字符串。
  • 布尔型:boolean
  • 任意类型:any
    任意类型也是意味着这个变量的类型是不定的。和python语言有同样的意思。
let a:any = 5  //这是数字类型
a = '5'    //重新赋值为字符串型。
let b:any[] 
b = [1,'2']  /b这个数组就可以存任何类型的了
  • 数组类型
let arr:number[] = [1,2,3]  //都是数字的数字
let arr1:string[] = ['1','2']  //都是字符的数组
let arr2:Array<number> = [1,2] //泛型数组 <>里面是类型
  • 元组类型
let x:[string:number]
x = ['1',1]

元组内类型不需要一致,但是对应的一定要一致。

  • 枚举
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 输出 2

自我理解,枚举就是定义一个新的数据类型,然后去使用它。

  • void
function hello(): void {
    alert("Hello Runoob");
}   //表示这个函数无返回值
  • null undefined never
    • null 表示对象值缺失
    • undefined 表示一个为定义的值
    • never 表示从不会出现的值
变量的声明

字母数字下划线和$符号别的都不行

var 变量名字:类型 = 值  
var  a = 5  // 因为a没有给定类型,所以a可以为任何类型

类型断言
就是指可以把一个类型转为另一个类型类似于类型转化

var a = 1
var b:string = <string>a //将a变为字符串类型
var b:string = a as string  //另外一种写法
运算符

三元运算

var a = 1>2 ? 1:2  // 如果1大于2,就取1,否则取2
判断类型
var a = 5
console.log(typeof a)
条件和循环

条件和循环和js一样,但是for 循环多了一个不一样的

var num = 5;
var j;
var n = "a b c";
for (j in n) {
    console.log(n[j]);
}   //可以看出这个和python中的for差不多。

还有一种es6中的for:

var num = 5;
var j;
var n = "a b c";
for (j of n) {
    console.log(n[j]);
}  //实际就是in换为of

foreach循环

let list = [4, 5, 6];
list.forEach((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
});
函数

和js中函数不一样的是,参数和函数返回值都可以定义类型

function add(x, y) {
    return x + y;
}
console.log(add(1, 2));

可选参数 ?

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");  // 正确

默认参数

function calculate_discount(price:number,rate:number = 0.50) { 
    var discount = price * rate; 
    console.log("计算结果: ",discount); 
} 
calculate_discount(1000) 
calculate_discount(1000,0.30)

剩余参数(就是我们不知道传多少个参数)

function addNumbers(...nums:number[]) {  
    var i;   
    var sum:number = 0; 
    
    for(i = 0;i<nums.length;i++) { 
       sum = sum + nums[i]; 
    } 
    console.log("和为:",sum) 
 } 
 addNumbers(1,2,3) 
 addNumbers(10,10,10,10,10)

匿名函数和js差不多
箭头函数和es6的一样

var foo = (x:number)=>10 + x 
console.log(foo(100))   

语法为 var 函数名字 = (参数)=> {函数体}

方法重载

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");
TypeScript是JavaScript的超集,包含了JavaScript的所有元素,能载入JavaScript代码运行,还扩展了其语法。以下从多个方面对二者语法进行对比、阐述联系与区别: ### 类型系统 JavaScript是动态类型语言,在运行时才检查变量类型;而TypeScript增加了静态类型特性,在编译阶段就可以检查类型错误。例如在JavaScript中,变量可以随时被赋予不同类型的值: ```javascript let num = 10; num = "hello"; // 不会在编译阶段报错 ``` 而在TypeScript中,若指定了变量类型,就不能赋予其他类型的值: ```typescript let num: number = 10; // num = "hello"; // 编译阶段会报错 ``` ### 面向对象支持 TypeScript为面向对象编程(OOP)原则提供了更好的支持,有类、接口继承等功能,语法更正式;JavaScript虽然也支持OOP,但使用基于原型的继承不太正式的语法。以下是二者定义类的示例: TypeScript示例: ```typescript class Person { name: string; constructor(name: string) { this.name = name; } greet() { return "Hello, " + this.name; } } let person = new Person("Alice"); console.log(person.greet()); ``` JavaScript示例: ```javascript class Person { constructor(name) { this.name = name; } greet() { return "Hello, " + this.name; } } let person = new Person("Alice"); console.log(person.greet()); ``` TypeScript在类的定义中明确指定了属性的类型,而JavaScript没有。 ### 代码编译 TypeScript代码在执行前需要通过编译转译成纯JavaScript代码,这样即使目标环境不支持ES6+,也能通过编译降级;JavaScript代码则可以直接在支持的环境中运行 [^2]。 ### 使用场景及优势 在大型工程团队协作场景下,TypeScript具有显著优势,其类型即文档,接口声明可成为代码自解释的文档,还支持混合编写.js.ts文件,并且与Angular、Vue 3、React等主流框架深度整合;而JavaScript在快速原型开发、小型脚本工具开发、已有JS项目且无扩展计划等场景下仍具价值 [^3]。 ### 联系 TypeScript是JavaScript的扩展,它可以使用JavaScript的所有特性,开发者可以在TypeScript项目中引入使用JavaScript代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值