Life Developer
인생 개발자
분류 전체보기 (141)
[typescript]Decorator - property에 decorator 붙혀서 통제하기

function writable(canBeWritable:boolean){

    return function(target:anypropName:string):any{

        console.log(target);

        console.log(propName);

 

        return{

            writable:canBeWritable,

        };

    }

}



class Person{

    @writable(false)

    name:string = 'kim';

 

    constructor(){

        console.log('new Person()');

    }

}

 

const pnew Person();

console.log(p.name);

  Comments,     Trackbacks
[typescript]Decorator - 메소드에 decorator 붙혀서 통제하기

function editable(canBeEditable : boolean){

    return function(target:anypropName:stringdescription:PropertyDescriptor){

        console.log(target);

        console.log(propName);

        console.log(description);

        description.writable = canBeEditable;

    }

}



class Person{

    constructor(){

        console.log('new Person()');

    }

 

    @editable(false)

    hello(){

        console.log('hello');

    }

}

 

const pnew Person();

p.hello();

p.hello=function(){

    console.log('world');

}

p.hello();

  Comments,     Trackbacks
[typescript]Decorator - 기본

프로퍼티에 적용

 

function firstDecorator(targetname){

    console.log('firstDecorator');

    console.log(target,name);

}

 

class Person{

    @firstDecorator

    job:'dancer';

 

    @firstDecorator

    age:30;

}

 

const p=new Person();

 

 

=================================

인스턴스 생성전에 decorator 전부 발동됨(미리 준비)

객체 생성문 없어도 준비됨.

인스턴스 생성하면 발동된것을 박는거임

 

 

function firstDecorator(param){

    console.log('factory');

    return function(target,name){

        console.log('decorator');

    }

}

 

class SomeClass{

    @firstDecorator(123)

    prop='a';

}

 

console.log('인스턴스 생성 전');

console.log(new SomeClass());

  Comments,     Trackbacks
[typescript]Generic type 응용

interface Person{

    name:string;

    age:number;

}

 

function getProperty<T,K extends keyof T>(obj:T, key:K):T[K]{

    return obj[key];

}

 

function setProperty<T,K extends keyof T>(obj:T, key:K, value:T[K]):void{

    obj[key] = value;

}

 

const person:Person = {

    name:'gibeom',

    age:35,

}

 

console.log(getProperty(person,'name'));

 

console.log(getProperty(person,'age'));



setProperty(person,'name','modified name');

 

console.log(getProperty(person,'name'));

 

console.log(getProperty(person,'age'));

  Comments,     Trackbacks
[typescript]Generic type - 2개이상 타입

class Person<TK>{

    private _name:T;

    private _age:K;

 

    constructor(name:T,age:K){

        this._name=name;

        this._age=age;

    }

}

 

new Person('kim',30); <- 여기서 객체의 타입을 정해버림

 

'Developer' 카테고리의 다른 글

[typescript]Decorator - 기본  (0) 2020.10.02
[typescript]Generic type 응용  (0) 2020.10.02
[typescript]Generic type - 상속  (0) 2020.10.02
[typescript]Generic class  (0) 2020.10.02
[typescript]Generic  (0) 2020.10.02
  Comments,     Trackbacks
[typescript]Generic type - 상속

제한을 둔다

 

class Person<T extends string|number>{

    private _name:T;

 

    constructor(name:T){

        this._name=name;

    }

}

 

new Person('aa');

new Person(22);

 

'Developer' 카테고리의 다른 글

[typescript]Generic type 응용  (0) 2020.10.02
[typescript]Generic type - 2개이상 타입  (0) 2020.10.02
[typescript]Generic class  (0) 2020.10.02
[typescript]Generic  (0) 2020.10.02
[typescript]class - readonly  (0) 2020.10.01
  Comments,     Trackbacks
[typescript]Generic class

class Person<T>{

    private _name:T;

 

    constructor(name:T){

        this._name=name;

    }

}

 

const kim = new Person('gibeom');

const age = new Person(123);

 

console.log(kim);

console.log(age);

'Developer' 카테고리의 다른 글

[typescript]Generic type - 2개이상 타입  (0) 2020.10.02
[typescript]Generic type - 상속  (0) 2020.10.02
[typescript]Generic  (0) 2020.10.02
[typescript]class - readonly  (0) 2020.10.01
[typescript]class - getter와 setter  (0) 2020.10.01
  Comments,     Trackbacks
[typescript]Generic

any 쓰지말고 제네릭 사용하면 좋음.

 

 

function helloString(message:string):string{

    return message;

}

 

function helloNumber(message:number):number{

    return message;

}

 

function hello<T>(message:T):T{

    return message;

}

 

hello("a");

hello(123);

 

 

function anyFn(param:any):any{

    return param;

}

 

String(anyFn("Aa")).substr;

 

any 를 쓰면 타입을 일일이 바꿔서 함수사용

  Comments,     Trackbacks