typescript之路(一)

本文介绍了TypeScript作为JavaScript的超集,如何提供类似于Java的强类型检查机制。覆盖了基础类型、数组、元组、枚举、接口等关键概念,并展示了如何使用TypeScript提升代码的可读性和管理性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typescript简介

typescript是javascript的超集,我的理解。typescript可以达到像java一样的代码风格,我比较喜欢。

基础类型
  • 布尔值

    let isDone:boolean =true;

  • 数字

    let nums:number=123;

  • 字符
    let str:string=“字符”;

  • 数组

    let arr:number[]=[1,2,3]
    let list: Array< number> = [1, 2, 3];

  • 元组 Tuple

    // Declare a tuple type
    let x: [string, number];
    // Initialize it
    x = [‘hello’, 10]; // OK
    // Initialize it incorrectly
    x = [10, ‘hello’]; // Error

  • 枚举
    enum Color {Red = 1, Green = 2, Blue = 4}
    let c: Color = Color.Green;

  • any
    如果不想让类型检查器对这些值进行检查
    let notSure: any = 4;
    notSure = “maybe a string instead”;
    notSure = false;

  • Void
    表示没有任何类型
    function warnUser(): void {
    console.log(“This is my warning message”);
    }

  • Object
    let o: object={0:0}

变量声明
  • let 声明

let 声明的变量的作用域是块级作用域,也就是说包含它们的块或for循环之外是不能访问的。它可以保护私有变量,可以理解为一个简单的闭包

function f(input: boolean) {
    let a = 100;

    if (input) {
        // 可以读取到a的值
        let b = a + 1;
        return b;
    }

    // 这里读取不到b的值
    return b;
}
  • const声明
    const是对let的一个增强,它能阻止对一个变量再次赋值。
接口

TypeScript的核心原则之一是对值所具有的结构进行类型检查。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。可以实现类似java的接口,接口可实现,也可被类继承。

  • 基本接口和可选属性接口

      interface LabelledValue {
       			 label?: string//加入问号。讲属性变为可选属性
       			 size?:10
      }
      function printLabel(labelledObj: LabelledValue) {
        console.log(labelledObj.label);
      }
      
      let myObj = {size: 10, label: "Size 10 Object"};//接口定义了的属性,外部必须传入,除非将其属性变为可选属性则可以不传
      printLabel(myObj);
    
  • 只读属性
    一些对象要求在创建了之后就不可修改了,可将接口的属性变为readonly。

      interface LabelledValue {
          			 readonly label?: string
          			 readonly size?:10
         }
    
  • 实现接口
    与Java里接口的基本作用一样,TypeScript也能够用它来明确的强制一个类去符合某种契约。

    interface ClockInterface {
     currentTime: Date;
     setTime(d: Date);
    }
    
    class Clock implements ClockInterface {
     currentTime: Date;
     setTime(d: Date) {
         this.currentTime = d;
     }
     constructor(h: number, m: number) { }
    }
    

    在类里面可以实现接口里面的方法
    上面的写法编译成浏览器可识别的代码为:

       var Clock = /** @class */ (function () {
     function Clock(h, m) {
     }
     Clock.prototype.setTime = function (d) {
         this.currentTime = d;
     };
     return Clock;
       }());
    

总结

从这三个章节来看,ts可以让我们拥有和java类似的强类型检查机制,但还达不到java的强度,将类和接口的概念引入,书写的代码更具备可读性。更容易理解,更利于对代码的设计和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值