Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • 하스켈
  • Rust
  • Til
  • html5
  • go
  • redis
  • 문자열
  • 알고리즘
  • javascript
  • html
  • 프로그래머스
  • Haskell
  • React
  • koa
  • Java
  • PostgreSQL
  • Flutter
  • CSS
  • 데이터 타입
  • mysql

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[Javscript] Tagged Template Literal
프론트 엔드/Javascript

[Javscript] Tagged Template Literal

2022. 1. 16. 16:39
728x90

1. Template Literal 이란?

템플릿 리터럴은 ' ` '(grave accent)로 감싸진 문자열 리터럴로서 여러 줄로 이뤄진 문자열과 문자 보간 기능을 

표현할 수 있다.

 

일반적으로 JS에서 스트링을 표현하고자 한다면 주로 (') 문자나 (") 문자를 사용한다.

이것을 Single/Double quotation (싱글 쿼테이션 / 더블 쿼테이션) 이라고 부른다.

 

하지만 템플릿 리터럴은 똑같은 스트링을 표현하지만 grave accent(억음 부호) 라고 부르는 ( ` ) 문자로 

감싸진 String을 사용한다.

 

그럼 이 둘 중에 어떤 것이 차이가 날까?

 

1-1. 줄 바꿈 표현

첫번째 로 줄 바꿈을 조금 더 편하게 표현해 줄 수 있다.

일반적으로 String에서 줄 바꿈을 표현할 때 이런식으로 '\n' 문자를 사용해 직접 삽입해주어야 줄바꿈이 

이루어졌는데...

console.log("string text line 1\n" + "string text line 2");
// "string text line 1 string text line 2"

하지만 템플릿 리터럴을 사용한다면 어떻게 줄바꿈이 이루어 질까?

console.log(`string text line 1 string text line 2`);
// "string text line 1 string text line 2

이런식으로 개발자가 따로 표시를 하지 않고도 좀 더 직관적으로 Enter만 입력해주어도, 개행문자를 표현해 줄 수 있다.

 

하지만 C++을 이용하는 개발자들은 '\n'을 따로 삽입해주는 편이 더 명시적인 표현법이라 고 할 수 있는데 

 

그래서 이런 기능보다는 조금더 좋은 특성을 활용할 수 있다.

 

1-2. Expression Interpolation

두 번째로는 interpolation이 가능하다!

주로 '보간' 아라는 말로 해석할 수 있고 뭔가를 끼워 넣는다는 표현인데 문자열 사이에 

표현식(코드)를 끼워넣을 수 있다는 이야기 이다.

 

let a = 5;
let b = 10
console.log (`Fifteen is ${a + b} and 
not ${2 * a + b).`);
// "Fifteen is 15 and 
// not 20."

이런 식으로 사용할 수 있다.

 

하지만 원래 방법으로도 사용이 가능한데 

let a = 5;
let b = 10;
console.log("Fifteen is " + (a + b) + " and/nnot " + (2 * a + b) + ".");
// "Fifteen is 15 and 
// not 20."

조금 만 더 손가락이 빠르다면 가능한 일이다.

 

하지만 Template Literal을 사용했을 떄 코드 길이가 훨씬 짦고 간결해 보이는 경우가 있어,

사용가능한 부분에는 사용하는 것을 추천한다.

 

1-3. Tagged String 

마지막으로 tagged string이라는 기능도 있다.

이것을 사용하면 템플릿 리터럴을 함수로 Parsing(파싱) 할 수 있다.

 

코드 면에서 직접 보면 

function template(strings, ...keys) {
   return (function(...variables) {
     let dict = values[values.length - 1] || {};
     let result = [strings[0]];
     keys.forEach(function(key, i) {
      let value = Number.isInteger(key) ? values[key] : dict[key];
      result.push(value, strings[i + 1];
     });
     return result.join('');
   });
}


let t1Closure = template`${0}${1}${0}!`;
t1Closure('Y', 'A'); // "YAY!"
let t2Closure = template`${0}$('foo')!`;
t2Closure('Hello', {foo: 'World'}); // "Hello World"

이런 형식으로 사용할 수 있다.

 

좀 더 실무적으로 도움이 될 예시가 있다만 오늘을 Template Literal Type에 대해 포스팅하는 글이라 

 

템플릿 리터럴을 함수로 파싱할 수 있다!만 알고 있다면 Tagged String에 대한 포스팅도 참고하길 바란다!!

 

 

참고자료

 

템플릿 리터럴 타입(Template Literal Types)

안녕하세요!오늘은 TS 4.1 부터 사용할 수 있게된 Template Literal Type에 대해 말씀드리려고 합니다.2020년 11월에 나온 기능이지만 아직 개발자들 사이에서 크게 공유된 것 같지 않아서함게 공유해보

velog.io

 

'프론트 엔드 > Javascript' 카테고리의 다른 글

[Javscript] 원시 자료형, 참조 자료형  (0) 2022.01.16
[Javascript] 모듈 export, import  (0) 2022.01.16
[javascript] 드림코딩 자바스크립트 4. Arrow Function은 무엇인가? 함수의 선언과 표현  (0) 2021.12.24
    '프론트 엔드/Javascript' 카테고리의 다른 글
    • [Javascript] 호이스팅 이란?
    • [Javscript] 원시 자료형, 참조 자료형
    • [Javascript] 모듈 export, import
    • [javascript] 드림코딩 자바스크립트 4. Arrow Function은 무엇인가? 함수의 선언과 표현
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바