精华内容
下载资源
问答
  • * 对象中主要包含了两个部分: * 属性 * 方法 * */ class Person{ /* * 直接定义的属性是实例属性,需要通过对象的实例去访问: * const per = new Person(); * per.name * * 使用static开头的属性是静态属性...
    // 使用class关键字来定义一个类
    /*
    *   对象中主要包含了两个部分:
    *       属性
    *       方法
    * */
    class Person{
    
        /*
        *   直接定义的属性是实例属性,需要通过对象的实例去访问:
        *       const per = new Person();
        *       per.name
        *
        *   使用static开头的属性是静态属性(类属性),可以直接通过类去访问
        *       Person.age
        *
        *   readonly开头的属性表示一个只读的属性无法修改
        * */
    
        // 定义实例属性
        // readonly name: string = '孙悟空';
        name = '孙悟空';
    
        // 在属性前使用static关键字可以定义类属性(静态属性)
        // static readonly age: number = 18;
        age = 18;
    
    
        // 定义方法
        /*
        * 如果方法以static开头则方法就是类方法,可以直接通过类去调用
        * */
        sayHello(){
            console.log('Hello 大家好!');
        }
    
    }
    
    const per = new Person();
    
    // console.log(per);
    // console.log(per.name, per.age);
    
    // console.log(Person.age);
    
    // console.log(per.name);
    // per.name = 'tom';
    // console.log(per.name);
    
    // per.sayHello();
    
    // Person.sayHello();
    per.sayHello();
    
    
    
    
    展开全文
  • 在使用ts对象成员时,必须对其赋初值,否则不能使用如batchMes.varietyId或对对象内不存在的值赋值。 const [batchMes, setbatchMes] = useState({ batchName: '', batchNum: '', batchMeasure: 0, breedF

    项目场景:

    在编写项目表单的时候,我们经常会使用到下拉选择器,对于选择器value的值一般为string或number类型,此次是为number类型的问题


    问题描述:

    在使用ts的对象成员时,必须对其赋初值,否则不能使用如batchMes.varietyId或对对象内不存在的值赋值。
    const [batchMes, setbatchMes] = useState({
        batchName: '',
        batchNum: '',
        batchMeasure: 0,
        breedFlag: 1,
        // varietyId:0,
        description: '',
        batchTime: ["2020-10-01", "2020-11-01"],
    
      })
    		<Form.Item
                  label={'所属品种'}
                  name="varietyId"
                  rules={[{ required: true, message: '请选择品种' }]}
                >
                  <Select
                    placeholder="请选择所属品种"
                    // value={batchMes.varietyId ? batchMes.varietyId : ''}
                    onSelect={(val) => setbatchMes({ ...batchMes, varietyId: Number(val) })}
                    showSearch
                    filterOption={(input, option) => {
                      if (option && option.title) {
                        return option.title === input || option.title.indexOf(input) !== -1
                      } else {
                        return true
                      }
                    }}
                  >
                    {
                      varietyData && varietyData.map((item: any) => {
                        return (
                          <Select.Option value={item.varietyId} title={item.name} key={item.varietyId}>{item.name}</Select.Option>
                        )
                      })
                    }
                  </Select>
                </Form.Item>
    

    在这里插入图片描述
    此刻就有一个问题,如果一定要赋初值,当该对象成员为string类型我们只要赋为‘ ’空值即可,那么number类型呢?我们不能给定任意一个数值,因为谁也不知道该数值在后端数据库是否存在,也不能是null之类的值,否则后期赋不了number类型。
    在这里插入图片描述


    原因分析:

    这是由于ts的特点类型校验的限定,因此我们只需对该对象做类型说明,或对该对象内会出现的成员做一个类型说明。

    解决方案:

    1.对对象进行类型说明,赋为any类型,为number类型的成员可不赋初值。但是该方法就无法对其进行类型校验,也就失去了ts的意义。
    const [batchMes, setbatchMes] = useState<any>({
        batchName: '',
        batchNum: '',
        batchMeasure: 0,
        breedFlag: 1,
        description: '',
        batchTime: ["2020-10-01", "2020-11-01"],
    
      })
    

    2.对对象内成员进行类型说明,同时那些初值为空赋值为number类型的成员设为可选,不赋初值即可。

    interface batchMesState {
      batchName: string,
      batchNum: string,
      batchMeasure: number,
      breedFlag: number,
      // enabledFlag: number,
      description?: string,
      batchTime: Object,
      varietyId?: number,
      landId?: number,
      breedBatchId?: number,
      objectVersionNumber?: number
    }
    const [batchMes, setbatchMes] = useState<batchMesState>({
        batchName: '',
        batchNum: '',
        batchMeasure: 0,
        breedFlag: 1,
        description: '',
        batchTime: ["2020-10-01", "2020-11-01"],
    
      })
    
    展开全文
  • const user = { name: 'abl', age: 24, sex: '男' } type Compare<T, U> = (a: T, b: U) => boolean; function findKey<T, U extends T[keyof T]>( record: T, value: U, ... ): keyo
    const user = {
      name: 'abl',
      age: 24,
      sex: '男'
    }
    
    type Compare<T, U> = (a: T, b: U) => boolean;
    
    function findKey<T, U extends T[keyof T]>(
      record: T,
      value: U,
      compare: Compare<T[keyof T], U> = (a, b) => a === b
     ): keyof T | undefined {
       return (Object.keys(record) as Array<keyof T>).find(k =>
        compare(record[k], value)
       );
     }
    
    findKey(user, 24); // age
    
    
    展开全文
  • TS对象类型 -- 接口(interface)

    千次阅读 2020-03-14 19:48:46
    //在Ts中的接口是非常灵活的概念,除了对行为抽象之外,他还对形状进行了描述 //1. interface Person { name: string; age: number; } //变量使用接口时,形状必须和接口相同,或多或少、类型...
    /**
     * 对象类型 -- 接口
     */
    //在面向对象的语言中,接口(interfaces)是对行为的抽象,而具体如何行动需要类(class)去实现
    //在Ts中的接口是非常灵活的概念,除了对行为抽象之外,他还对形状进行了描述
    //1.
    interface Person {
      name: string;
      age: number;
    }
    //变量使用接口时,形状必须和接口相同,或多或少、类型不同都是不允许的
    let tom: Person = {
      name: "tom",
      age: 12
    };
    
    //2.可选属性 ?
    interface Person2 {
      name: string;
      age?: number;
    }
    let tom2: Person2 = {
      name: "tom2"
    };
    
    //3.任意属性
    interface Person3 {
      name: string;
      age?: number;
      [proName: string]: any;
      //[proName: string]: stingr; 这种情况,age就会报错,因为number不属于string类型的子集
    }
    //一旦定义了任意属性,他就会影响确定属性和可选属性的类型
    //任意属性之外的其他属性的类型,也必须符合任意属性的类型
    let tom3: Person3 = {
      name: "tom3",
      age: 15,
      gender: "any"
    };
    
    //4.只读属性
    interface Person4 {
      readonly id: number;
      name: string;
    }
    let tom4: Person4 = {
      id: 12,
      name: "tom4"
    };
    tom4.name = "tom44";
    //只读的约束属性在于第一次给对象赋值的时候,而不是给只读属性赋值的时候
    //tom4.id = 123; 会报错
    
    
    展开全文
  • JSON转JS/TS对象,JS/TS对象转JSON

    万次阅读 2018-10-18 11:37:07
    JSON转JS/TS对象,JS/TS对象转JSON JSON.parse(’{“id”:“id”,“disabled”:false}’);//json字符串转对象 JSON.stringify(new Object());// 对象转json字符串
  • ts 遍历对象

    2021-09-02 14:04:47
    不要使用 for in,参考这里 for (const [key, val] of Object.entries(obj)) { console.log(key, val) }
  • 定义 type IPlanTagProps = { content: string; bg?: string; color?: string; ... [propName: string]: IPlanTagProps;... 'a': { content: 'aa', bg: '#E9EDFF', color: '#264AFF' }, 'b': { content: 'bb
  • Ts定义对象和数组类型

    千次阅读 2021-03-26 10:36:46
    对象类型-接口 // 1. // 定义了一个接口 Person(行为的抽象,事物的本质), interface Person1 { name:string; age:number; } // 接着定义了一个变量 pr,其类型就是 Person(接口是类型,对象类型)。约束...
  • //通过接口定义相应的结构 interface Item { name: string, icon: string, url: string, status:boolean, initShow:boolean, copanyStatus:boolean } interface IPlist{ title:string, ... .
  • ts实现对象转为数组

    2021-06-23 11:31:15
    let envTypeOptions_:any=[]; let envOptions_:any={ isA:'腾讯', isB:'微博', isC:'朋友圈' }; Object.keys(envOptions_).forEach(function(key:string){ envTypeOptions_.push({ ... label:envOptions_[key] ...
  • js/ts 实现对象深度克隆

    千次阅读 2019-11-23 13:20:57
    自己实现了一个对象深度克隆: 主要缺陷只有一个: 对键值为循环调用的对象无能为力,会堆栈溢出。 作用: 适合常规的纯数据对象深度克隆 function clone(o: any, record = [o]) { switch (Object.type(o)) {...
  • ts定义数组对象

    千次阅读 2021-03-03 09:55:27
  • 自己用TS实现的一个简易对象池,适用于小游戏开发 const {ccclass, property} = cc._decorator; @ccclass export class PoolManager extends cc.Component { public static instance: PoolManager; onLoad() ...
  • ts 简单的对象深拷贝

    千次阅读 2019-12-10 15:55:17
    简单的通过循环对象的 key , 如果 key 还是一个对象 通过递归来不断的进行对象的拷贝。 export function deepMerge(...objs: any[]): any { const result = Object.create(null) objs.forEach(obj => { if ...
  • 请求大佬 下面的为什么没有提示 interface A { id: number, name: string, age: number ... // 对象类型 ngOnInit() { // Object.assign(this.objA, this.objB) this.objA = {... this.obj
  • TS类型断言简化对象类型声明

    千次阅读 2020-10-09 20:22:05
    TS类型断言简化对象类型声明 前言 在使用了 typescript 的项目开发中,有时候为了某个对象进行声明,经常需要写完 interface 之后,在赋值的时候又写了一遍一模一样的代码;当想对它增加一个键值,又得去增加 ...
  • ts(typescript)面向对象之类的继承 类继承的作用 继承可以描述类与类之间的关系, 例如: 在斗地主的小游戏中,我们只看牌,牌里面有分4种花色的牌(除了大小王),♥,♠,♦,♣,我们可以知道♥的牌是牌,♠的牌...
  • // e对象中只能有一个name属性,不可以多也不可以少 e = { name: '123' } // 如果我们的对象中有多个属性,但有一些属性可能存在也可能不存在 let f: { name: string, age?: number, sex?: string } // 这里...
  • toExponential()把对象的值转换为指数计数法。 toFixed()把数字转换为字符串,并对小数点指定位数。 toLocaleString()把数字转换为字符串,使用本地数字格式顺序。 toPrecision()把数字格式化为指定的长度。 ...
  • interface Item{ name:string; path:string; } interface Index{ [index: number]: Item; } interface List{ list: Index } ...百度了一圈没找到,目前暂时这么实现,有更好的方式再补充~ ......
  • JS/TS遍历对象的键值对_艾孜尔江撰

    万次阅读 2021-01-27 20:22:53
    const keys: any[] = Object.keys(reqOfAClient); keys.forEach(key => { console.log(key + ":" + key.value); }); ```
  • TS:在对象中定义一个方法

    千次阅读 2020-09-09 09:28:58
    var myObj = { myMethod: function(params) { // ...do something } // 或者 这样写也可以 myOtherMethod(params) { // ...do something else } }; 参考资料: TS官方文档
  • 我们都知道,ts 中 获取对象中的属性有好多种方式 通过点的方式来进行获取 通过属性表达式的方式进行获取 通过获取对象的属性描述符进行获取 我们获取属性的第二种方式,对象[值],使用成员表达式就叫做是索引器...
  • 1. 使用ts如何定义一个空对象 interface MyObject { [key: string]: any; } 2.如何判断一个对象为空对象? let data = {}; let arr = Object.keys(data); console.log(arr.length == 0);//true
  • 数组对象ts中的用法

    千次阅读 2021-02-19 17:34:26
    数组对象TS中的用法 length长度 let songs:string[]=['red','blue','pink'] console.log(songs.length) push**push()** 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长 3.**forEach()** ...
  • JAVA自定义注解@FileName】,我的做法是将多层次的JSON只看成一层,就算是对象A里面的对象B某一个属性发生了变化,依旧B全部返回,然后通过前端解析,将对象中的对象B单拎出来,上一次的操作和这次update操作比较, ...
  • ts第二节----在ts中自定义类型对象

    千次阅读 2020-07-18 11:16:42
    ts中自定义类型对象使用interface关键字 下面是我新建的一个02.ts文件,代码如下 let count:number=20 在这里我们定义了count为一个数值类型,那么对于count来说,所有关于数值的一些方法,count是都能够使用的。 ...
  • ts如何定义数组中嵌套对象的类型

    千次阅读 2020-05-13 11:38:09
    定义类型: interface ObjectOf<V> { [_: string]: V } class OrderItem { uuid: string; amount: number; secondaryTotal: number; total: number; originalTotal: number;... giftCheck:ObjectO
  • typescript(六)--ts中接口(对象型)

    千次阅读 2018-07-21 14:08:15
    如题,接下来我们介绍下,ts中接口的使用。 ts中接口,接口是代码的一种规范、约束和规定,ts中接口可分为以下几类: 对象型接口 :对对象的规范 函数型接口 :对函数的规范 可索引(数组型)接口:对数组(or对象)的...
  • ts-class-initializable 一个小助手,用于从纯对象启用类实例属性的初始化。 扩展一个Initializable类,您的类构造函数将接受一个普通对象文字作为其第一个参数,并将这些值分配给实例属性。 例子 class Foo ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,180
精华内容 36,472
关键字:

ts对象