Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[공유]Fluent Interface - javascript #15

Open
vcho1958 opened this issue Dec 18, 2021 · 0 comments
Open

[공유]Fluent Interface - javascript #15

vcho1958 opened this issue Dec 18, 2021 · 0 comments

Comments

@vcho1958
Copy link

vcho1958 commented Dec 18, 2021

👩‍💻 공유 사항

Nest공식문서에서 미들웨어 생성방식 설명란에서 참조하길래 번역해봤습니다. 자바의 빌더(this객체 리턴)와 유사한 형태를 보고 Fluent Interface를 지원한다고 하는 것 같아요.

원본 링크
자바스크립트의 많은 라이브러리들(가장 많이 알려진 예로 jQuery가 있습니다.)의 예제들은 이런 몇몇 바리에이션을 사용합니다. 전형적으로 유창한 빌더(Java의 Builder와 같은 형태)들은 데이터베이스 쿼리들을 수행하기위해 사용됩니다.

// 테이블에서 목록을 가져오는 예시

client.getItem('user-table')
    .setHashKey('userId', 'userA')
    .setRangeKey('column', '@')
    .execute()
    .then(function(data) {
        // data.result: the resulting object
    })

이런 것들을 자바스크립트에서 수행하기 위한 간단한 방법은 prototype 상속을 사용하거나
Fluent Interface를 사용하는 것입니다.

// example from https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html

class Kitten {
  constructor() {
    this.name = 'Garfield';
    this.color = 'orange';
  }

  setName(name) {
    this.name = name;
    return this;
  }

  setColor(color) {
    this.color = color;
    return this;
  }

  save() {
    console.log(
      `saving ${this.name}, the ${this.color} kitten`
    );
    return this;
  }
}

// use it
new Kitten()
  .setName('Salem')
  .setColor('black')
  .save();

✅ 참고 사항

공유할 내용, 스크린샷 등을 넣어 주세요.

  • 추가적인 공유가 필요한 사항은 Comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant