Issue : Playground problem with serialisation of logs
현재 issue의 문제는 위 사진에서 artola라는 사람이 언급한 것처럼
Playground의 console.log에 undefined를 인자로 넘겨줄 경우, 실행 결과를 보여주는 log 창에 제대로 된 결과가 나오지 않는다는 것이다.
(참고로 Playground는 사용자들이 직접 TypeScript로 스크립트를 작성하고 그 결과를 볼 수 있도록 만들어놓은 페이지)
즉, 위 언급을 정리하자면
1) 현재 console.log({foo: undefined}); // -> [Log] : {}
2) 원래는 // -> [Log] : {foo : undefined}
이다.
코멘트를 더 살펴보면,
이렇게 쓰여있는데 정리하자면,
우리가 전달해주는 인자는 object로 인식되나, 이후 처리에서 JSON.stringfy가 이 object를 제대로 처리 해주지 못한다는 것이다.
코드 분석
orta님께서 말씀하신 코멘트의 링크를 따라가 분석을 해보니,
console.log({foo: undefined});
로 넘겨준 {foo: undefined}는 object로 인식되어 141라인의 조건문을 참으로 만든다.
코드 분석
우리는 여러 경우의 수를 테스트 해보기 위해 각 조건문을 디버깅 해보았다.
{foo: undefined}로 넘겨준 경우엔 isObj가 참이기에 제일 마지막 else if에 걸리는 것이 맞았고,
결국 stringfy가 문제였다.
현재 object를 stringfy 할 경우
object에 있는 key와 value를 뽑아 string으로 출력해주는 것이 아닌,
의도하지 않은 값을 string으로 변환해주었다.
그래서 현재 {}인 값이 나오는 것이었다.
이는 default stringfy 함수가 기본으로 설정이 그렇게 되어있기 때문이었고,
그렇다면 우리는 stringfy를 변형하던가, 잘 처리를 하여 string으로 처리를 해주어야만 했다.
(이 모든 과정은, 같은 팀원과 여러 코드를 작성해보면서 실시간으로 회의를 하며, 의견을 나누었다 - 아래 사진)
해결 방안
해결방안은 두가지로 판단되었다.
두가지 중 나는 다음과 같이 생각하였다.
1) stringfy가 제대로 object를 처리해주지 못하고 있는 상태
2) stringfy 함수를 재 정의하자
3) 재정의한 함수에서 object를 뜯어 따로 string으로 반환해주자
생각한 것을 토대로 코드를 짜보았다.
예시코드를 작성하여 comment를 달기로 하였다.
같이 진행하는 팀원과 하나씩 맡아 issue에 Comment를 남기기로 하였다.
'Open Source Contribution' 카테고리의 다른 글
[Typescript - Website] 4. Translation and Contribute (0) | 2020.12.23 |
---|---|
[Typescript - Website] 문제점 1. Repo Local Build - node.js 버전 (0) | 2020.12.23 |
[Typescript - Website] 문제점 2. Repo Local Build - watchman (0) | 2020.12.23 |
[Typescript - Website] 2. Repo Local Build (0) | 2020.12.18 |
[Typescript - Website] 1. Repo 분석(docs, issue 1) (0) | 2020.12.17 |