개발자
안녕하세요, 타입스크립트 고수님들에게 타입스크립트의 키워드 "as"에 대해서 문의 드립니다. 관건은 'as' 인데요 as의 의미를 다음의 순서대로 풀어보았습니다. 아래 코드에서 as의 역할/의미를 아래 순서대로 이해하는게 맞을까요? (=똑 떨어지는 설명이 없다보니, 나름 의미를 풀어서 이해해봤습니다.) 1.*[k in keyof O as O[K] 만약 k가 k in keyof o의 첫번째 값으로 'who'가 들어오고, 텍스트 'who'를 타입을 string이라고 합니다(as는 왼쪽의 값을 오른쪽의 값으로 '간주'하기 때문에) 라고 종종 서적에서 볼 수 있습니다. 2.*k in keyof O == O[K] 저는 as를 "=="이라고 이해하는데요, who(k in keyof O)는 string이라는 타입값이라고 간주합니다(=who는 string 입니다 라는 확정적인 의미가 아니라, "이렇게 할래" 이런 어조로 말입니다.) 3.[핵심!] who ==(비슷하다라고 간주하다) string 이기 때문에, who를 쓰는건 곧 "잠재적?"으로 string이라고 이해해도 될까요??.. (즉, who라고 쓰고 who라는 자리에 타입 string이라고 읽는다..처럼 말이죠...) 4.*who(==string) extends T(number) ? never : K(who) 텍스트 who는 곧(==) string 타입이기 때문에, 3번에서 말한 것처럼, who의 타입은 string이기 때문에 never가 아닌, K즉 who로 종료된다 요약하면, as를 쓰면 위 코드 상에서는 2가지 의미가 떠오르는데요, 1.k라는 텍스트를 o[k]의 타입으로 바인딩을 시키고 2.k는 o[k]라는 타입을 갖게 되어(= 타입 캐스팅), k를 사용하는 건 곧, k의 타입 o[k]를 사용하는 것이다 라고 이해했습니다. k라고 쓰고 o[k]라고 읽는 다 처럼 말이죠, as가 as 이하의 타입으로 "만든다" 라고만 생각하면, 위의 3번 내용이 생각이 나질 않습니다. 아래 코드에서 as를, 코드"순서대로" 이해해보려 하니 조금은 억지스러운 면이 있었지만, 조금은 컴퓨터 답게? as를 제대로 이해하고 있는지 고수님들에게 조언을 듣고 싶습니다! 감사합니다!

답변 1
수학자처럼 코딩하시는 분인거 같네요. 오랜만에보니 반갑습니다. 타입 스크립트에서 as는 캐스팅 같은 특별한 기능을 하거나 그러진 않습니다. 그냥 컴파일러에게 힌트를 제공해 주는 매크로 같은 키워드죠. 컴퓨터 같은 사고를 떠나서 의미하는 바는 영어 그대로입니다. 한국말로 하면 '~로 (여기다)'입니다. 예를 들어, 'A as B라고 하면 A라는 값을 B라는 타입으로 여기겠다'입니다.

undefined
작성자
직원 • 2024년 03월 18일
답변 감사합니다 :]
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!