mkdir sort
cd sort
mkdir src
mkdir build
code .
tsc --init
把rootDir的路徑設定為 "rootDir": "./src",
把outDir路徑設為"outDir": "./build",
這樣ts檔跟編譯後的js檔產生路徑就設定好了
之後也可以嘗試tsc -w
可以直接編譯所有設定在rootDir的ts檔
但這樣每次都要下指令太麻煩了
所以可以在sort資料夾路徑用cmd下指令: npm init
先產生一個package.json檔
之後輸入指令npm install nodemon concurrently
加入nodemon 跟concurrently
然後修改裡面的script內容
"scripts": {
"start:build": "tsc -w",
"start:run": "nodemon build index.js",
"start": "concurrently npm:start:*"
},
這表示每次都會同時啟動所有start:開頭的script
以上都設定好後,我們在src內新增一個index.ts檔
console.log("HELLO WORLD");
console.log("TEST");
然後在cmd輸入npm start
就可以看到他自動啟動我們剛剛設定在script內的指令了
接下來是project介紹
這個sort project是要實作演算法裡面的bubble sort
可以參考這個網址
https://pjchender.blogspot.com/2017/09/bubble-sort.html
在src下建立Sorter.ts
export abstract class Sorter {
abstract compare(leftIndex: number, rightIndex: number): boolean;
abstract swap(leftIndex: number, rightIndex: number): void;
abstract length: number;
sort(): void {
const { length } = this;
for (let i = 0; i < length; i++) {
for (let j = 0; j < length - i - 1; j++) {
if (this.compare(j, j + 1)) {
this.swap(j, j + 1);
}
}
}
}
}
在src下建立NumberCollection.ts
import { Sorter } from './Sorter';
export class NumbersCollection extends Sorter {
constructor(public data: number[]) {
super();
}
get length(): number {
return this.data.length;
}
compare(leftIndex: number, rightIndex: number): boolean {
return this.data[leftIndex] > this.data[rightIndex];
}
swap(leftIndex: number, rightIndex: number): void {
const leftHand = this.data[leftIndex];
this.data[leftIndex] = this.data[rightIndex];
this.data[rightIndex] = leftHand;
}
}
把index.ts內容修改如下
import { NumbersCollection } from './NumbersCollection';
const numbersCollection = new NumbersCollection([50, 3, -5, 0]);
numbersCollection.sort();
console.log(numbersCollection.data);
之後執行npm start
就能看到bubble sort的結果了
0 Comments:
張貼留言