Fork me on GitHub

2018-04-01 JS: TypeScript 2.8、React 16.3.0、TensorFlow.js

Translator: U-Yeong Ju Edit on GitHub See Revisions

JSer.info #377 - TypeScript 2.8이 정식 릴리스 됐습니다.

Conditional Types를 지원하며 Conditional Types를 사용한 빌트인 타입으로 Exclude<T, U>, Extract<T, U>, NonNullable<T>, ReturnType<T>, InstanceType<T>가 추가됐습니다.
mapped type modifier의 +, - 지원, .d.ts 파일만 출력 할 수 있는 emitDeclarationOnly 옵션 추가, @jsx 프래그마 코멘트 지원 등이 이뤄졌습니다.


React 16.3.0이 릴리스 됐습니다.

향후 큰 기능 변경을 예고하고 있습니다.
새로운 Context API, createRef 메서드, forwardRef 메서드, StrictMode 컴포넌트 등이 새롭게 추가됐습니다.

또, 비동기 렌더링 지원으로 인해 React 컴포넌트의 라이프 사이클 이벤트가 변경 됐습니다.
componentWillMount, componentWillReceiveProps, componentWillUpdate 는 앞으로 삭제되며 대신getDerivedStateFromPropsgetSnapshotBeforeUpdate가 추가됐습니다.

다음과 같은 절차로 위 라이플 사이클 API의 삭제가 이뤄지게 됩니다.

  • 16.3: 각각 alias 메서드 UNSAFE_componentWillMount, UNSAFE_componentWillReceiveProps, UNSAFE_componentWillUpdate 추가
  • A future 16.x release: componentWillMount, componentWillReceiveProps, componentWillUpdate를 사용 시 비권장 경고 메시지 출력
  • 17.0: componentWillMount, componentWillReceiveProps, componentWillUpdate 삭제
    • 단, 원할한 마이그레이션을 위해 UNSAFE_ 버전은 17.x에서도 유지함

이후, 버전 18.0에서 비권장 라이플 사이클 API가 완전히 삭제 될 예정입니다(UNSAFE_ 버전은 17.x에서도 남음).
자세한 내용은 아래 글에 소개돼 있으니 참고하시길 바랍니다.


브라우저에서 TensorFlow 모델을 사용해 기계 학습을 할 수 있는 TensorFlow.js가 공개됐습니다.
본래 Google이 개발 중이던 deeplearn.js의 차기 버전으로써 공개됐습니다.

JavaScript와 high-level layers API를 이용해 기계 학습을 할 수 있습니다. 처음으로 기계 학습을 배우는 JavaScript 개발자를 위한 관련 내용이 아래 문서에 정리돼 있으니 참고하시길 바랍니다.

또, 기존 TensorFlow나 Keras의 모델을 변환해 불러올 수 있으며 브라우저 상에서 재학습 등도 할 수 있습니다.
현재는 WebGL에 의존하고 있기 때문에 브라우저에서만 동작하며 Node.js 지원에 대해서는 검토 중인 것으로 FAQ를 통해 알 수 있습니다.


헤드라인


React v16.3.0: New lifecycles and context API - React Blog

reactjs.org/blog/2018/03/29/react-v-16-3.html

React ReleaseNote

React v16.3.0이 릴리스 됐습니다.
새로운 Context API, createRef 메서드, forwardRef 메서드, StrictMode 컴포넌트가 추가됐습니다.
컴포넌트 라이프 라이클 이벤트가 변경 됐습니다.


March 2018 Security Releases | Node.js

nodejs.org/en/blog/vulnerability/march-2018-security-releases/

node.js ReleaseNote security

Node.js의 보안 업데이트로써 각각 LTS와 개발 버전 업데이트가 공개됐습니다.

  • Node.js 9.10.0
  • Node.js 8.11.0 (LTS "Carbon")
  • Node.js 6.14.0 (LTS "Boron")
  • Node.js 4.9.0 (LTS "Argon")

V8 JavaScript Engine: V8 release v6.6

v8project.blogspot.com/2018/03/v8-release-66.html

V8 Chrome ReleaseNote

V8 v6.6(Chrome 66)이 릴리스 됐습니다.
ECMAScript Proposal 대응을 위해 Function#toString()이 사양을 따르도록 수정됐고 JS가 JSON의 superset 되는 사양에 맞춰 변경됐습니다.
또, catch 구문의 파라메터 생략 가능하도록 변경됐고 String#trimStartString#trimEnd가 구현됐으며 Background compilation을 대응하고 Async, Array의 성능이 개선됐습니다.


ZEIT – Next.js 5.1: Faster Page Resolution, Environment Config & More

zeit.co/blog/next5-1

React node.js library ReleaseNote

Next.js 5.1이 릴리스 됐습니다.
런타임 환경을 설정할 수 있는 publicRuntimeConfigserverRuntimeConfig 옵션 추가됐고 페이지 로딩 속도와 에러 핸들링 방식이 개선됐습니다.


Release v3.4.0 · storybooks/storybook

github.com/storybooks/storybook/releases/tag/v3.4.0

JavaScript ui library ReleaseNote Tools

Storybook 3.4.0이 릴리스 됐습니다.
Polymer2를 지원하고 Angular와 Vue의 storyshot을 지원합니다.


power-assert/CHANGELOG.md at v1.5.0 · power-assert-js/power-assert

github.com/power-assert-js/power-assert/blob/v1.5.0/CHANGELOG.md

JavaScript testing library Tools ReleaseNote

power-assert 1.5.0이 릴리스 됐습니다.
Node.js 9.9.0에 추가된 assert의 strict mode를 지원합니다.


📦 Parcel v1.7.0: – devongovett – Medium

medium.com/@devongovett/parcel-v1-7-0-9aac0c505837

JavaScript Tools ReleaseNote

Parcel v1.7.0이 릴리스 됐습니다.
.vue와 Pug를 새롭게 지원하며 absolute path와 tilde(~) path도 지원합니다. 또, 출력한 파일에 해시 값을 부여하도록 개선됐으며 필요한 의존 모듈을 자동적으로 설치하도록 변경됐습니다.


Dart Sass 1.0.0 is Released « Sass Blog

sass.logdown.com/posts/7045860-dart-sass-100-is-released

Sass dart ReleaseNote

Dart Sass 1.0이 릴리스 됐습니다.
Ruby Sass는 앞으로 유지보수만 합니다.


ESLint v5.0.0-alpha.0 released - ESLint - Pluggable JavaScript linter

eslint.org/blog/2018/03/eslint-v5.0.0-alpha.0-released

ESLint serverless

ESLint 5.0.0α가 릴리스 됐습니다.
예정됐던 비호환 변경에 대한 내용은 마이그레이션 가이드에 소개돼 있으니 참고하시길 바랍니다.


Announcing TypeScript 2.8 | TypeScript

blogs.msdn.microsoft.com/typescript/2018/03/27/announcing-typescript-2-8/

ReleaseNote TypeScript

TypeScript 2.8이 릴리스 됐습니다.
Conditional Types, @jsx 프래그마 코멘트, mapped type modifier의 +, -를 지원하며 d.ts만 출력하는 옵션이 추가됐습니다.


아티클


Server Timing API를 사용해 서버 사이드 벤치마킹을 편리하게 | 블로그 :: Web notes.log(일본어)

blog.wnotes.net/blog/article/server-side-benchmark-using-server-timing-api

node.js server library performance

Server Timinig API를 사용해 서버 사이드의 리퀘스트 별 벤치마킹 데이터를 Chrome 개발자 도구에 출력하는 방법을 소개합니다.


Update on Async Rendering - React Blog

reactjs.org/blog/2018/03/27/update-on-async-rendering.html

React article

비동기 렌더링을 위한 라이프 라이클 이벤트 추가와 변경 사항에 대해 작성돼 있습니다.
16.3에서 새로운 이벤트를 추가하고 16.x에서 구 이벤트 사용 시 경고 출력하며 17.0에서 구 이벤트 폐지를 진행합니다.
또 새롭게 추가한 getDerivedStateFromPropsgetSnapshotBeforeUpdate를 소개합니다.


Working with the new CSS Typed Object Model  |  Web  |  Google Developers

developers.google.com/web/updates/2018/03/cssom

CSS article JavaScript

CSS Typed OM에 대해 소개합니다.
이미 존재하는 style 프로퍼티와 새롭게 추가되는 attributeStyleMap의 차이나 CSS Typed OM에 추가된 API 메서드 리고 장점과 사용 방법이 작성돼 있습니다.


WebAssembly/esm-integration: ECMAScript module integration

github.com/WebAssembly/esm-integration

WebAssembly module ECMAScript

웹 어쎔블리를 위한 ES Module Integration Proposal 저장소 입니다.


How display: contents; Works

bitsofco.de/how-display-contents-works/

CSS article

display: contents;에 대해 소개하는 글입니다.


사이트, 서비스, 문서


CondeNast/perf-timeline-cli: Generate Chrome Performance Timelines via a command line interface

github.com/CondeNast/perf-timeline-cli

Chrome performance Tools

Chrome 개발자 도구의 Performance 패널 정보를 가져올 수 있는 CLI 도구입니다.
Puppeteer를 사용해 접근한 페이지에 대한 측정 결과를 가져올 수 있습니다.


JavaScript in 14 minutes by Jeremy Thomas

jgthms.com/javascript-in-14-minutes/

JavaScript tutorial

브라우저의 개발자 도구에서 실행해 보면서 배울 수 있는 JavaScript 튜토리얼 글입니다.


소프트웨어, 도구, 라이브러리


cmseaton42/task-easy: A simple, customizable, and lightweight priority queue for promises.

github.com/cmseaton42/task-easy

JavaScript Promises library

Promise 스케줄 라이브러리입니다.


asfktz/Awaity.js: A functional, lightweight alternative to bluebird.js, built with async / await in mind.

github.com/asfktz/Awaity.js

JavaScript Promises library

async/await 기반의 컬렉션 라이브러리입니다.
Promise를 지원하는 map, filter, reduce 등의 컬렉션 조작을 제공합니다.


jacobbogers/libRmath.js: Javascript Pure Implementation of Statistical R "core" numerical libRmath.so

github.com/jacobbogers/libRmath.js

JavaScript TypeScript R library

R의 `math를 JavaScript에 포팅한 라이브러리입니다.


TensorFlow.js

js.tensorflow.org/

MachineLearning JavaScript library WebGL

tensorflow의 JavaScript 버전입니다.
WebGL을 사용해 기계 학습을 지원하며 기존 학습 모델을 converter로 변환하여 재사용할 수 있습니다.


jaywcjlove/hotkeys: ➷ A robust Javascript library for capturing keyboard input. It has no dependencies.

github.com/jaywcjlove/hotkeys

JavaScript 키보드 React library

단축키를 관리할 수 있는 라이브러리입니다.


도서


React 개발 현장 교과서 | 마이나비북스(일본어)

book.mynavi.jp/ec/products/detail/id=88735

React book

React와 Atomic Design을 주제로한 도서입니다.


CSS Pocket Reference, 5th Edition - O'Reilly Media

shop.oreilly.com/product/0636920146353.do

CSS book

2018년 4월 출간 예정인 CSS 레퍼런스 도서입니다.


Pull Request to this article
JSer.info Slackに参加する