this.setState(prevState => ({
      files: prevState.files.concat(files)
    }));


this.setState({
        files: [...this.state.files, ...array],
      });

concat을 다음과 아래와 같은 방식으로도 쓸 수 있다.

 private fileListToArray(files: FileList): File[] {
    const array: File[] = [];
    Array.prototype.forEach.call(files, (file) => {
      if (files !== null) {
        array.push(file);
      }
    });
    return array;
  }

filelist는 배열이 아니라 바로 foreach를 쓸수 없다.하지만 length와 숫자인덱스는 존재하기 때문에
Array.prototype으로 감싸주면 forEach사용가능하다.

for (var i = 0; i < files.length; i++) {

    // get item
    file = files.item(i);
    //or
    file = files[i];
    alert(file.name);
}

파일리스트의 각 파일들에 접근방법

 private onClickClearList(): void {
    this.setState({ files: [] });
    (document.getElementsByClassName(
      "file-input",
    )[0] as HTMLInputElement).value = "";
  }

HTMLelement들은 Type assertions으로 타입을 설정해줘야 한다.