inflearn logo
강의

講義

知識共有

TypeScriptを始める

[함수타입2] 함수 this에 대한 타입 부분, 제가 제대로 이해했을까요?

265

here2letters6603

投稿した質問数 21

0

안녕하세요,

해당 섹션에서 this 타입이 각각 왜 string 인지, object인지 , 제가 제대로 이해 했는지 궁금해 질문 드립니다.

 

# 1. 영상 1:07 에서, 함수 getParam의 this

# 2. 영상 1:35 에서, 함수 getShortKeys의 this

 

# 1. 영상 1:07 에서, 함수 getParam의 this

function getParam(this:string, index:number){..중략..}
..중략... 
console.log('asdf,1234,ok'.getParams(1))

this의 타입을 string로 한 이유는,

그 this 키워드를 정의한 함수,getParam는

function 키워드로 함수를 선언했고,

string('asdf,1234,ok'), 즉 문자열이 함수 getParam을 호출했기 때문에,

(=function으로 선언한 함수는, 해당 함수를 어떤 객체가 호출 했느냐로, this의 값(타입)이 결정되기 때문에 )

this가 string타입으로 되는건가요?

 

그래서

function getParam(this:string, index:number){
  const params = this.splte(",")
}

this는 이미 문자열인 string타입으로 참조되기 때문에,

문자열 함수인 split()를 작성 해야하는 에러인건지요?

 

# 2. 영상 1:35 에서, 함수 getShortKeys의 this

//인터페이스 정의
getShortKeys(this:object):string[]

..중략...

//객체 obj
const obj={a:1, bb:2, ccc:3, ddd:4}

console.log(obj.getShortKeys())

 

this가 object인 이유는 함수,getShortKeys를 object(obj객체)가 호출했기 때문에,

this가 object 타입이 된건가요??

 

typescript

回答 1

0

landvibe

안녕하세요
값과 타입을 구분해서 이해하시는 게 좋을 것 같습니다.

 

* 값 측면: String의 프로토타입에 추가한 함수는 this가 string입니다

* 타입 측면: (값에서)this가 string이기 때문에 타입도 그렇게 정의합니다

 

만약 getParam을 Object의 프로토타입에 추가했다면 타입 측면에서는 타입 에러가 발생하고, 값 측면에서는 런타임 에러가 발생합니다.

 

getShortKeys도 마찬가지입니다

 

* 값 측면: Object의 프로토타입에 추가한 함수는 this가 object입니다

* 타입 측면: (값에서)this가 object이기 때문에 타입도 그렇게 정의합니다

lodash 가 안될때

0

90

1

에궁 처음부터 막히네요...ㅜㅜ

0

75

1

객체 할당 관련 질문 있습니다.

0

326

1

퀴즈 관련 질문이 있습니다.

0

343

1

공변성 강의

0

255

2

시간 4:31 인터페이스 타입가드에 대해

0

231

1

리턴값이 연산인 제네릭 에러 해결

0

427

2

code runner 사용 시 output이 깨지는 문제

0

2456

2

2: 38

0

196

1

5:55 내용에 대하여 질문드립니다.

0

440

2

extends에 관하여

0

293

1

return 타입

0

177

1

/bin/sh: node_modules/.bin/ts-node: No such file or directory 오류

0

363

1

Person 과 Product

0

208

1

tsc 기본이 es3

0

313

1

[#다시질문] Person과 Product 관계

0

160

1

타입스크립트 부분실행 질문드립니다

0

711

1

함수 타입2 에서 1:53

0

329

2

1:19 에서 interface String

1

272

2

안녕하세영 정리

0

166

1

this 질문

0

221

1

function add

0

177

2

타입스크립트 사용하는 이유 : 높은 생산성

0

197

2

코드

0

173

1