鸿蒙ArkTS语言快速入门-TS(二)

相关文章快速入口:鸿蒙ArkTS语言快速入门-TS(一)

TS入门学习

变量声明

使用let和const声明,替代var声明方式。

let的声明,各种声明例子如下:可以指定类型,也可以不指定

let x = 10; //不指定类型
let x:number = 10//指定类型,很多情况下为了编码速度都不喜欢指定类型
let input = [1, 2]; //数组
let [first, ...rest] = [1, 2, 3, 4]; //解构
let o = {
    a: "foo",
    b: 12,
    c: "bar"
};  //声明对象 
let { a, ...passthrough } = o; //对象解构

let { a: newName1, b: newName2 } = o; //对属性的重命名,:不是指类型 类似let newName1 = o.a; let newName2 = o.b;
let {a, b}: {a: string, b: number} = o; //这是指定类型

联合类型声明:

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

const的声明,它们与let声明相似,但是就像它的名字所表达的,它们被赋值后不能再改变。

const numLivesForCat = 9;

在TS中在同一作用域下let声明变量名称一致是会报错的,如下:

let x = 10;
let x = 20; // 错误,不能在1个作用域里多次声明`x`

条件语句

条件语句用于基于不同的条件来执行不同的动作。TypeScript 条件语句是通过一条或多条语句的执行结果(true 或 false)来决定执行的代码块。

if语句

TypeScript if 语句由一个布尔表达式后跟一个或多个语句组成。

let num = 5;
if (num>1){
  console.log("true")
}

if…else if…else 语句跟平常写法类似。

switch…case 语句

let grade = 'A';
switch(grade) {
  case 'A': {
    console.log('优');
    break;
  }
  case 'B': {
    console.log('良');
    break;
  }
  case 'C': {
    console.log('及格');
    break;
  }
  case 'D': {
    console.log('不及格');
    break;
  }
  default: {
    console.log('非法输入');
    break;
  }
}

接口

在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

普通函数接口

interface LabelledValue {
  label: string;
}

function printLabel(labelledObj: LabelledValue) {
  console.log(labelledObj.label);
}
//只要传入的对象满足上面提到的必要条件,那么它就是被允许的。
let myObj = {label: "Size 10 Object"};

printLabel(myObj);

函数类型接口

接口能够描述JavaScript中对象拥有的各种各样的外形。 除了描述带有属性的普通对象外,接口也可以描述函数类型。

interface SearchFunc {
  (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
  let result = source.search(subString);
  return result > -1;
}

类类型接口

与C#或Java里接口的基本作用一样,TypeScript也能够用它来明确的强制一个类去符合某种契约。

interface ClockInterface {
    currentTime: Date;
}

class Clock implements ClockInterface {
    currentTime: Date;
    constructor(h: number, m: number) { }
}

继承接口

和类一样,接口也可以相互继承。 这让我们能够从一个接口里复制成员到另一个接口里,可以更灵活地将接口分割到可重用的模块里。
一个接口可以继承多个接口,创建出多个接口的合成接口。

interface Shape {
    color: string;
}

interface PenStroke {
    penWidth: number;
}

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};
square.color = "blue";
square.sideLength = 10;
square.penWidth = 5.0;

接口继承类

当接口继承了一个类类型时,它会继承类的成员但不包括其实现。 就好像接口声明了所有类中存在的成员,但并没有提供具体实现一样。 接口同样会继承到类的private和protected成员。 这意味着当你创建了一个接口继承了一个拥有私有或受保护的成员的类时,这个接口类型只能被这个类或其子类所实现(implement)。

当你有一个庞大的继承结构时这很有用,但要指出的是你的代码只在子类拥有特定属性时起作用。 这个子类除了继承至基类外与基类没有任何关系。 例:

class Control {
    private state: any;
}

interface SelectableControl extends Control {
    select(): void;
}

class Button extends Control implements SelectableControl {
    select() { }
}

class TextBox extends Control {

}

// Error: Property 'state' is missing in type 'Image'.
class Image implements SelectableControl {
    select() { }
}

如果接口这里不太明白,可先略过看下一章节的函数和类之后再反过来看这篇文章。

相关文章快速入口:鸿蒙ArkTS语言快速入门-TS(三)

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值