编辑代码

// interface IObj {
//     key: string
//     value: string
// }

// interface ISpecs<T> {
//     items: T
// }

// interface IData <T>{
//     dataType: string
//     specs: T

// }

// interface IAttr {
//     name: string
//     identifier: string
//     dataDefine: IData<ISpecs<Array<IObj>>>
// }

// class Attribute implements IAttr {
 
//     name: string
//     identifier: string
//     dataDefine: IData<ISpecs<Array<IObj>>>
//     constructor(name: string = '', identifier: string = '', dataDefine: IData<ISpecs<Array<IObj>>> = { dataType: 'int', specs: { items: [{ key: '', value: '' }] } }) {
//         this.name = name
//         this.identifier = identifier
//         this.dataDefine = {
//             dataType: dataDefine.dataType,
//             specs: {
//                 items: dataDefine.specs.items
//             }
//         }
//     }
// }

// const test = new Attribute()
// console.log(test, 'testtest')

interface Ispecs {
    min?: number,
    max?: number,
    step?: number,
}

interface IData {
    dataType:string,
    specs: Ispecs  
}

interface IAttr {
    propertyKey: string,
    dataDefine: IData
}


class A implements IAttr{
     propertyKey: string;
     dataDefine:IData
    constructor(props:IAttr = {
        propertyKey:'ss',
        dataDefine:{
            dataType:'dataType',
            specs: {
                min: 1,
                max: 2,
                step:2,
            }  
        }
    }){
        this.propertyKey = props.propertyKey
        this.dataDefine = {
            dataType:props.dataDefine.dataType,
            specs:{
                min: 1,
                max: 2,
                step:2,
            }
        }
       
    }

    say(){
        console.log('sayHello')
    }
}

const aa = new A()
aa.say()
console.log(aa)