2020 년에 구축하는 것

Mar 10 2020
2020 년 계획은 세 가지 영역을 다룹니다. Flow는 편집기 내 진단 (유형 오류), 자동 완성 및 "정의로 이동"과 같은 풍부한 편집 및 코드 검색 기능을 제공하는 언어 서버를 제공합니다. 우리는 VS Code에서 동급 최고의 경험을 제공하는 데 초점을 맞추고 있지만 LSP를 사용하는 모든 편집기는 Flow의 언어 서버를 활용할 수 있습니다.
Aksonsat Uanthoeng 님의 사진, 출처 : Pexels

2020 년 계획은 세 가지 영역을 다룹니다.

  • VS Code 편집 및 브라우징 경험의 기능과 응답 성을 개선합니다.
  • 우리의 유형 시스템을 더 간단하고 표현력 있고 정확하게 만드십시오.
  • 성능 재확인을 유지하면서 최대 메모리 사용량을 줄입니다.

Flow는 편집기 내 진단 (유형 오류), 자동 완성 및 "정의로 이동"과 같은 풍부한 편집 및 코드 검색 기능을 제공하는 언어 서버를 제공합니다. 우리는 VS Code에서 동급 최고의 경험을 제공하는 데 초점을 맞추고 있지만 LSP 를 사용하는 모든 편집기 는 Flow의 언어 서버를 활용할 수 있습니다.

2020 년에는 편집 및 탐색 경험에 대한 두 가지 투자에 초점을 맞출 것입니다. 첫째, IDE 기능의 안정성과 응답 성을 지속적으로 개선 할 것입니다. 둘째, 가장 많이 요청 된 IntelliSense 기능에 대한 지원을 추가 할 것입니다.

Flow 언어 서버는 처음 시작할 때 초기화해야하고 때로는 대규모 리베이스와 같은 이벤트 후에 다시 시작해야하기 때문에 항상 즉시 응답하지는 않습니다. 대부분의 언어 기능을 사용하려면 코드를 편집하는 동안 Flow 서버가 계속 실행되어야합니다. 가능한 경우 편집 및 찾아보기 요청을 서버 없이도 완료 할 수 있도록 변환 할 것입니다. 또한 Flow 서버가 스스로 다시 시작해야하는 상황을 계속 줄일 것입니다.

두 번째 투자는 가장 많이 요청 된 IntelliSense 기능 (매개 변수 정보, 빠른 정보 및 빠른 수정)에 대한 지원을 추가하는 것에서 비롯됩니다 .

  • 매개 변수 정보에는 함수 호출을 입력 할 때 표시되는 서명 도움말 (예상되는 매개 변수 수 및 유형)이 포함됩니다. 코드의 JSDoc 주석에서 추출한 매개 변수에 대한 문서도 표시 합니다.
  • 빠른 정보는 코드에서 식별자 위로 마우스를 가져 가면 선언을 보여줍니다. Flow는 이미 함수 서명을 보여줍니다. 빠른 정보의 형식을 개선하고 매개 변수 정보와 유사한 문서 주석을 추가 할 것입니다.
  • 방금 첫 번째 빠른 수정 기능인 "이것을 의미 했습니까?"를 추가했습니다. 입력 할 때 코드 수정을 제안 합니다. 예를 들어라는 필드가 없지만 라는 필드가 foo.bar있는 객체에 작성 하는 경우 빠른 수정이 해당 제안을 적용합니다. 또한 흐름 오류 억제 및 정적 문 자동 생성을 추가하는 방법을 조사하고 있습니다 .foobarbazimport

우리는 단순하고 표현력이 풍부하고 정확한 세 심하게 디자인 된 문자 시스템이 개발자에게 더 나은 경험을 제공 할 수 있다고 믿습니다.

  • 간단합니다 : 개발자는 Flow가 코드에서 어떻게 동작할지 예측할 수 있습니까?
  • 표현 적 : 개발자가 Flow에 의해 차단되지 않고 필요한 작업을 수행 할 수 있습니까?
  • 옳음 : 개발자는 비용이 많이 드는 일반적인 실수를 방지하기 위해 Flow를 사용할 수 있습니까?
  • thisin 함수와 메서드를 사용 하면 암시 적으로 any. 사용 any은 안전하지 않으며 Flow가 오류를보고하지 못하도록합니다. for 타이핑을 구현 this하면 Flow가 this.
  • 봉인되지 않은 개체 유형 은 빈 개체 리터럴과 함수의 속성을 모델링하는 데 사용됩니다. 봉인되지 않은 개체를 사용하면 언제든지 새 속성을 작성할 수 있습니다. 여러 문에서 개체 초기화를 활성화하는 것과 같은 시나리오에 유용합니다. 그러나 Flow는 일치하는 쓰기가없는 봉인되지 않은 개체의 읽기를 확인하지 않습니다 . 일반적인 초기화 패턴을주의 깊게 추적하여 이러한 불건전 함을 해결하기 위해 노력할 것입니다.
  • 흐름의 많은 유틸리티 유형 , 같은 $ObjMap$PropertyType, 해당 런타임 작업의 의미를 반영하지 않습니다. 이러한 유형에 대한 일류 디자인을 만들 것입니다.
  • 흐름 오류 억제 는 매우 약합니다. $FlowFixMe한 종류의 오류를 억제하기 위해 코드 줄 위에 추가하면 실제로 해당 코드에서 발생하는 모든 오류를 억제하여 향후 오류를 잠재적으로 마스킹합니다. 동일한 코드 줄에 다른 오류를 숨기지 않고 특정 오류를 억제 할 수있는 오류 코드를 디자인하고 있습니다. 그리고 억제를 오류의 주요 위치로 이동하여 정의에 첨부 된 억제가 해당 정의가 사용되는 오류를 숨기지 않도록합니다.
  • 제네릭 형식과 함수는 현재 예측할 수없는 동작을 가지고 있습니다. 제네릭 형식 매개 변수는 범위를 이스케이프 할 수 있고 제네릭 함수에 대한 호출은 호출 사이트에서 멀리 떨어진 새 경계를 누적 할 수 있습니다. 우리는 제네릭 함수에서보다 안정적인 오류 감지, 이스케이프 된 유형 매개 변수를 방지하기위한 테스트, 함수 호출이 제대로 제한되는지 확인하는 검사를 포함하여 제네릭에 대한 새로운 동작을 설계하고 있습니다.

Flow 팀 은 작년에 재확인 시간을 70 % 단축하는 등 엄청난 성능 향상을 제공했습니다 . 성능 향상에 대해 Facebook 개발자로부터 압도적 인 긍정적 인 피드백을 들었습니다. 우리는 JavaScript 코드베이스가 성장하더라도 성능을 유지하는 것을 목표로합니다. 또한 모든 상황에서 Flow의 메모리 사용량을 줄이기 위해 노력하고 있습니다.

마지막으로

2020 년에 Flow 팀은 업계 전반의 안정성, 기능 완전성 및 즐거움에 대한 표준과 동등한 개발자 경험을 제공 할 것입니다. 이 개발자 경험의 일환으로 기본 사항 인 메모리 사용 및 안정성을 지속적으로 개선 할 것입니다. 가장 많이 요청 된 IDE 편집 및 찾아보기 기능을 제공합니다. 또한 개발자가 안전하고 올바른 코드를 더 쉽게 작성할 수 있도록 Flow의 유형 시스템을 향상시킬 것입니다.

이 블로그, GitHub 및 Flowtype Discord 채널 에서 계속 연락 드리겠습니다 .