整理タイプスクリプト入門#4タスク管理アプリケーションの作成と学習
20755 ワード
現在のステータス
let todoItems;
// api
function fetchTodoItems() {
const todos = [
{ id: 1, title: "안녕", done: false },
{ id: 2, title: "타입", done: false },
{ id: 3, title: "스크립트", done: false },
];
return todos;
}
// crud methods
// API를 불러오는 것처럼 작성하기 위해서 만든 함수
function fetchTodos() {
const todos = fetchTodoItems();
return todos;
}
function addTodo(todo) {
todoItems.push(todo);
}
function deleteTodo(index) {
todoItems.splice(index, 1);
}
function completeTodo(index, todo) {
todo.done = true;
todoItems.splice(index, 1, todo);
}
// business logic
function logFirstTodo() {
return todoItems[0];
}
function showCompleted() {
return todoItems.filter((item) => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems() {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
}
// NOTE: 유틸 함수
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
簡単な2つのリストが実装されました.ただし、タイプスクリプトではなくjavascriptで実装されています.このため、上記の構造タイプのエラーが発生しました.
実習
noImpliceAnyを閉じる
まず
"noImplicitAny": true
を設定し、index.ts
ファイルを表示します.上にはいろいろな間違いがあります.
any
はjavascriptの動的タイプバインドとあまり変わらないので、any
のみを使用すると、タイプスクリプトを記述する意味がありません.答えを作成
エラーが発生しないように、
index.ts
の内容を変更しましょう.私の場合は以下の通りです.interface Todo {
id: number;
title: string;
done: boolean;
}
let todoItems: Todo[];
// api
function fetchTodoItems(): Todo[] {
const todos = [
{ id: 1, title: "안녕", done: false },
{ id: 2, title: "타입", done: false },
{ id: 3, title: "스크립트", done: false },
];
return todos;
}
// crud methods
// API를 불러오는 것처럼 작성하기 위해서 만든 함수
function fetchTodos(): Todo[] {
const todos = fetchTodoItems();
return todos;
}
function addTodo(todo: Todo): void {
todoItems.push(todo);
}
function deleteTodo(index: number): void {
todoItems.splice(index, 1);
}
function completeTodo(index: number, todo: Todo): void {
todo.done = true;
todoItems.splice(index, 1, todo);
}
// business logic
function logFirstTodo(): Todo {
return todoItems[0];
}
function showCompleted(): Todo[] {
return todoItems.filter((item) => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems(): void {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
addTodo({
id: 4,
title: "테스트1",
done: false,
});
addTodo({
id: 5,
title: "타입스크립트 공부",
done: false,
});
}
// NOTE: 유틸 함수
function log(): void {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
答えと知らない。
私がすぐに書いた答えはほとんど最終的な答えです.
でも説明するときに知らないことがいくつかあります
タイプはtypeとして定義できます
// type으로 타입 정의하기
type Todo {
id: number;
title: string;
done: boolean;
}
type
というキーワードでタイプを定義できるとは知らなかった.正式なファイルでタイプを定義する方法はinterface
なので、interface
と定義します.タイプを個別に定義せず、戻りタイプを直接定義します。
let todoItems: {id: number, title: string, done: boolean}[];
前述したように、戻りタイプを定義できます.複数回使用するタイプであれば、コードが重複するため、上記のタイプは推奨されません.
一度だけ書いて、馬のタイプなら上記の方法も考えられますが、コードの可読性が少し損なわれているような気がするので、避けるかもしれません.
Reference
この問題について(整理タイプスクリプト入門#4タスク管理アプリケーションの作成と学習), 我々は、より多くの情報をここで見つけました https://velog.io/@jakeseo_me/타입스크립트-입문-정리-4-할-일-관리-애플리케이션을-만들며-배워보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol