zoukankan      html  css  js  c++  java
  • 学习笔记之TypeScript语法一

    js原有数据类型在ts中的应用

    let isDone: boolean = false;
    let decLiteral: number = 6;
    let myName: string = 'Tom';
    let u: undefined = undefined;
    let n: null = null;

    undefined类型的变量只能被赋值为undefined,null只能被赋值为null

    如果是一个普通类型,在赋值过程中改变类型是不被允许的,因此如果需要改变类型就需要用到any

    et myFavoriteNumber: any = 'seven';
    myFavoriteNumber = 7;

    在任意值上访问任何属性都是允许的,也允许调用任何方法

    let anyThing: any = 'hello';
    console.log(anyThing.myName);

    变量如果在声明的时候,未指定其类型,那么它就会被识别为任意值类型

    ts存在类型推论,就是说在定义变量的时候,虽然没有指定变量的类型,但是定义了变量的具体值,就根据这个值来推断这个变量的类型,也就不可以再改变这个变量的类型了。同时支持联合类型,就是说取值可以是多种类型的一种,比如

    let myFavoriteNumber: string | number;

    当ts不确定一个联合类型具体是哪个类型的时候,我们就只能访问此联合类型的所有类型里共有的属性或方法

    function getLength(something: string | number): number {
    return something.length;
    }
    //length 不是 string 和 number 的共有属性,所以会报错。

    - 接口

    interface Person {
    name: string;
    age: number;
    }
    let tom: Person = {
    name: 'Tom',
    age: 25
    };

    变量Tom的形状必须跟接口Person完全一致,属性也是不能多不能少,if你有不一致需求的时候

    interface Person {
    name: string;
    age?: number; //允许这个变量没有
    }
    let tom: Person = {
    name: 'Tom'
    };

    这时仍然不允许添加未定义的属性,如果需要任意属性,使用[propName: string]就可以定义任意属性来取string类型的值。一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子级

    interface Person {
    name: string;
    age?: number;
    [propName: string]: any;
    }
    let tom: Person = {
    name: 'Tom',
    age: 25, //这个就要超出错,因为这个可以没有,但是如果有了就属于任意属性里面的,就只能是string
    gender: 'male'  //任意属性名
    };
    // 只读属性 readonly id: number;  只可以获取不可以更改值,当然第一次赋值还是可以赋值的
  • 相关阅读:
    Android 开发工具类 06_NetUtils
    Android 开发工具类 05_Logcat 统一管理类
    Android 开发工具类 04_KeyBoardUtils
    Android 开发工具类 03_HttpUtils
    Android 开发工具类 02_DensityUtils
    Android 开发工具类 01_AppUtils
    APP 渠道推广【摘自网络】
    Android SDK 在线更新镜像服务器资源
    使用 Chrome 生成 UUID
    解决div里插入img下边缝隙问题
  • 原文地址:https://www.cnblogs.com/fdd-111/p/11840080.html
Copyright © 2011-2022 走看看