1. 类型别名

1. 类型别名

类型别名,顾名思义就是给某个类型起别名,之后就可以通过这个别名来使用类型啦

type 别名 = 类型
// 后续直接使用别名即可

试一试:

  1. 使用 类型别名 保存联合类型
  2. 直接通过类型别名来使用这个联合类型
/*
 * 联合类型语法规则:
 * 作用:根据现有的数据类型来定义一个新的数据类型别名,方便编码
 * 语法:type 类型别名 = 类型
 *
 * 注意点:
 * 1. 类型别名使用的时候初始值设定要和类型别名中的类型保持一致
 * */

// 1. 定义了一个类型别名Length1
type Length1 = number | string

// 2. 使用类型别名定义变量的类型即可
let w1:Length1 = '100%'// ✔️
let w2:Length1 = 100  // ✔️
// let w3:Length1 = true //❌

@Entry
@Component
struct Index {

  build() {
    Column() {

    }
    // .backgroundColor()
    .height('100%')
    .width('100%')

  }
}

2. 类

类是用于创建对象的模板。他们用代码封装数据以处理该数据。同时类声明也会引入一个新类型,并定义其字段方法构造函数

// 类名 首字母大写(规范)
class 类名{
  // 属性
  
  // 方法
  
  // 构造函数
}


// 使用类 实例化对象 基于类 创建对象
const x:类名 = new 类名()

2.1. 实例属性

通过实例属性来保存各种类型的数据

可选链操作符

// 类
class 类名{
  // 字段名+类型+初始值
  字段名:类型='xxx'
  // 可选字段可以不设置初始值
  字段名?:类型
}

// 可选字段在使用时需要配合 可选链操作符 避免出错

试一试:

  1. 定义类 Person
  2. 字段:
    1. name,字符串,默认为 ''
    2. food,字符串,可选
  1. 实例化 Person 对象,并赋值name 属性
  2. 依次打印 name,food 的 length 属性
/*
 * 类:作用:根据一个模板动态创建对象
 * 类定义语法:
 * class 类名 {
 *    属性
 *    方法
 * }
 *
 * 使用类创建一个对象:
 * let obj:类名 = new 类名()
 * */

// 需求:创建一个杨幂对象,名字和年龄
// 1. 定义类
class YmPerson {
  name: string = '杨幂'
  age: number = 20
}

// 2. 使用类创建对象
let ymObj: YmPerson = new YmPerson()
console.log(ymObj.name, ymObj.age)

let ymObj1: YmPerson = new YmPerson()
console.log(ymObj1.name, ymObj1.age)

@Entry
@Component
struct Index {
  // sc = new Scroller()
  // listsc = new ListScroller()

  build() {
    Column() {

    }
    .onClick(() => {
      // this.listsc.scrollToItemInGroup(0)
    })
    .height('100%')
    .width('100%')

  }
}

2.2. 构造函数

上一节的代码是在 实例化 之后,挨个对属性进行赋值,如果自定义了构造函数,可以在构造函数中完成该操作

class 类{
  字段A:类型
  字段B:类型

  constructor(参数...) {
    // 通过 new 实例化的时候 会调用 constructor
    // 通过关键字 this 可以获取到实例对象
  }
}
const 实例 = new 类()

/*
 构造函数的作用: 一个类中一旦有了显式编写 constructor, 在new 类()的时候是可以传参的
 * 这个参数是可以给类中的属性设置初始值,我们可以通过new 时传入不同的数据类决定创建什么阳的对象
 *
 * ✨✨注意点:
 * 1. 如果一个类中没有写constructor构造函数,类本身是有一个默认的没有带参数的构造函数
 * 2. 如果想要在new的时候带参数,则我们在定义类的时候,应该要显式编写constructor,参数类型和数量由我们自己定
 *
 * new 和构造函数的关系
 * ① 调new 的时候开辟一个内存空间 -> 写上类中的属性 此时没值
 * ② 调用构造函数给属性赋值
 * ③ 将创建好的对象返回交给我们定义的变量
 * */

// 需求:创建一个杨幂对象,名字和年龄
// 1. 定义类
class Person {
  name: string
  age: number

  // 在构造函数中可以给属性做初始化值操作
  constructor(pname: string, page: number) {
    // 将 参数赋值给 类中的属性(字段)
    this.name = pname
    this.age = page
  }
}

// 2. 使用类创建对象
let ym: Person = new Person('杨幂', 20)
console.log(ym.name,ym.age)

let lxx:Person = new Person('刘诗诗',19)
console.log(lxx.name,lxx.age)

@Entry
@Component
struct Index {
  // sc = new Scroller()
  // listsc = new ListScroller()

  build() {
    Column() {

    }
    .onClick(() => {
      // this.listsc.scrollToItemInGroup(0)
    })
    .height('100%')
    .width('100%')

  }
}

试一试:

  1. 定义类
    1. 添加多个字段,不设置默认值
  1. 构造函数接收参数,内部完成字段的 初始化 操作
  2. 使用接口类型简化参数传递
  3. 描述一下

你可能感兴趣的:(前端,javascript,开发语言)