本文目录
- typescript的number类型变量怎么不能++
- typescript变量定义
- 【ts基础】TypeScript中的数据与定义
- 如何用 TypeScript 提高 JS 工程的健壮性
- #8 swift 枚举类型
typescript的number类型变量怎么不能++
TypeScript的基本数据类型:BooleanNumberStringArrayEnumAnyVoid如果有其他语言的基础,我们可以发现大部分的基本数据类型我们都见过。下面简单介绍一下各个数据类型的数据如何初始化和使用:1、Boolean值,值为布尔值 true 或者 false view plain copyvar isDone: boolean = false; 这个和JavaScript的写法不太一样,他相对于js多了数据类型的声明。使用例子: view plain copyvar isDone: boolean = false; function show() { isDone = true; alert(isDone); } show(); 2、Number类型,数字类型 view plain copyvar num: number = 11; 3、String类型,字符串类型 view plain copyvar str: string = "lsw"; 4、Array类型,数组类型。有两种方式声明,(1)直接通过[]来声明 view plain copyvar list:number; 这里可以看到这是一个number类型的数组,数组中每一位成员都是number类型(2)使用array来声明 view plain copyvar list:Array《number》 = ; 《》中时数组的类型数组的使用和javascript中操作和使用数组方法是一致的。5、Enum类型,枚举类型 view plain copyenum Color {Red, Green, Blue}; var c: Color = Color.Green; 枚举类型默认值是从0开始,那么c = 1我们也可以修改枚举类型的默认值 view plain copyenum Color {Red=1, Green, Blue}; var c: Color = Color.Green; 由于Red值为1,那么Green对应的值则是2,所以c= 4TypeScript还有一个更为重要的操作,通过值返回枚举值的名字,使用方法 view plain copyenum Color {Red = 1, Green, Blue}; var colorName: string = Color; alert(colorName); 这里可以看到Color枚举中值为2的枚举名字是 Green,那么colorName就是Green。6、Any任何类型通过名字我们可以看到这个类型代表的是可以是任何的类型包括我们自定义的类型。 view plain copyvar anyDemo:any = 123; anyDemo = true; anyDemo = "lsw"; anyDemo这个参数声明为any类型,那么他可以赋值为number类型的值123,也可以赋值为boolean类型的true,最后它的类型为字符串类型 “lsw”。7、Void类型这个类型主要是用在方法返回值声明 view plain copyfunction test():void { var a: number = 1; var b: number = 2; var c: number = a + b; alert(c); } void 表示这个方法不返回任何的值关于TypeScript的基本值类型简介就到这里,继续努力!
typescript变量定义
1.let a: number;:定义一个类型是number的变量a(let a: number | string:联合类型) 2.let b: boolean = false;:定义一个boolean类型的变量b并给它赋值false 3.let c = false;:定义一个变量c并给它赋值false(自动默认boolean类型) 4.let d: ’男’ | ’女’;:定义变量d,可以赋值男或女 5.let e: any;:关闭ts类型检查,可以赋值任意类型,相当js,也可以赋值给任意类型的变量(let e; 隐式any) 6.let f: unknown;:相当于any,不过不能赋值给其他类型(d=f是错的) 7.let g: {name: string, age?: number};:定义一个对象,赋值的时候结构必须和定义时候的一样(?表示可选) 8.let h: {name: string, : any};:定义一个对象,name是必须的,其他的可以优任意多个对象(propName随便起) 9.let i: (a: number, b: number) =》 number;:定义一个函数的结构(i = function() {}) 10.let j: string;:定义一个字符串数组,里面只能放字符串(等同于:let j: Array《string》) 11.let k: ) 12.enum l: {male, female};:枚举 13.提供get和set方法(类似java的封装)
【ts基础】TypeScript中的数据与定义
1.js有的类型 boolean类型、number类型、string类型、array类型、undefined、null、symbol (7种) 2.ts多出的类型 tuple类型(元组类型)、enum类型(枚举类型)、any类型(任意类型) 3.特别的类型 void类型: (没有任何类型)表示定义方法没有返回值 never类型: 是其他类型(包括null和undefined)的子类型,代表从不会出现的值 (这意味着声明never变量只能被never类型所赋值) 在参数后面加?变为可选参数,可选参数必须配置到参数的最后面 使用...result:number来代替剩余参数并定义类型。 java重载是指两个或两个以上同名函数,但是函数参数不同,这时候会出现函数重载的情况 ts重载是指通过一个函数提供多个函数定义来试下多种功能的目的 方法重载可以和函数选择传参一起用 ts里的类 类里面的修饰符,ts三种:public(公类、子类、类外面) protected(类外面不能访问) private(子类、类外面不能访问)***隐藏网址***
如何用 TypeScript 提高 JS 工程的健壮性
1. Typed Tuple虽然 JavaScript 里一直没有正宗的 Tuple 类型,但是在 JavaScript 中使用 Tuple 一直都是很常见的事情,可以基于数组也可以基于对象,有了解构赋值以后用数组还是对象的代码量几乎完全相同。在 TypeScript ,如果我们需要一个具有静态类型的 Tuple,一种方式是定义一个 interface 然后使用对象,但是这样看起来比较麻烦。另一种方式就是直接使用 TypeScript 提供的 Tuple 类型:let error: ;在 TypeScript 的类型标注中,当我们把类型写在方括号之前,就是 Typed Array,当类型写在方括号之中,就是 Typed Tuple 了。接着我们就可以使用类型安全的方式解构或者手动取值:// Both correctly typedlet = error; // code is number and message is stringlet anotherCode = error; // anotherCode is numberlet anotherMessage = error; // anotherMessage is string2. String Literal Type当我们需要使用静态可枚举的内容时,最正统的方式当然是使用 Enum。不过对于一些需要和已有 JavaScript 类库交互时,必须得使用 String 类型,这时候往往会难以进行静态检查(例如拼写错误)。这时候,可以使用 TypeScript 提供的 String Literal Type:class Socket {on (event: ’open’ | ’message’ | ’error’ | ’close’, cb) {// ...}}let mySock = new Socket();socket.on(’message’, () =》 {});这样,如果传入的 String 不在预设范围内,就会报错,从而实现静态检查效果。3. Void对于所有没有返回值的函数或者方法,都应该声明为 Void 类型,而不是留空,后者为 Any 类型。function log(message: string): void {// ...}4. Implements Class对于面向对象编程,组合优于继承,但是对于组合,我们往往需要先定义一个接口类型,然后再定义一个这个接口的实现类型,十分繁琐。在 TypeScript 中,我们可以直接 Implements(而非 extends)一个(或多个)类:class Base1 {method1 () {}}class Base2 {method2 () {}}class MyClass implements Base1, Base2 {constructor (private base1: Base1, private base2: Base2) {}method1 () { return this.base1.method1(); }method2 () { return this.base2.method2(); }}这样,我们就不要像 Java 那样先定义一个 SomeInterface,再定义一个 SomeImpl,再把自己的 Class 实现 Interface,再把 SomeImpl 注进来那么麻烦了。
#8 swift 枚举类型
swift中的枚举( Enumerations )真的是太灵活了,感觉自己已经驾驭不了这匹野马了。
swift中的枚举特点:
使用 enum 关键词定义枚举类型,这个和其它语言一致 例如
typescript中定义枚举:
swift中: 使用 case 关键词来定义一个新的枚举成员
使用:
可以使用switch匹配单个枚举值
作用:
示例:一种商品有2种编码方式进行追踪:
有时候我们可能需要将枚举中所有的case情况组成一个集合,可以让枚举类型扩展 CaseIterable 协议。
另外swift通过 allCases 属性暴露了枚举类型中所有case 的集合: 注意 Xcode 10.0+ 版本才支持这个属性
作为关联值的替代选择,枚举成员可以被默认值(也称为 原始值 )预填充, 这些原始值的类型必须相同
原始值的理解: 即定义枚举的时候,把枚举的类型也定义了,比如 enum Color: String , 定义其类型为 String 类型
和关联值的区别:
示例:使用ASCII码作为原始值的枚举
当原始值类型为整型或者字符串类型时,不需要显式的给每个枚举成员设置原始值,swift会自动的为你赋值
使用 rawValue 属性可以访问枚举成员的原始值:
对 字符串类型 : 隐式的为该枚举成员的名称
如果枚举类型使用了原始值, 自动获取一个初始化方法 (呵呵,什么鬼),这个方法接收一个 rawValue 的参数,参数类型即为原始值类型,返回值则是枚举成员或 nil
另外, 原始值构造器是一个可失败构造器(failable initializer)
例如,调用构造器创建一个新的枚举实例
特点:
要操作具有递归性质的数据结构,使用递归函数事一种直接的方式:
感觉这个这么复杂,估计用到的地方也比较少,了解即可
因为枚举类型是值类型,赋值一般都是通过拷贝的方式,所以原来的值不会改变,swift中提供了 mutating 关键词用来改变值类型的值
其结构大致如下