ut-code / syllabus-next

4 stars 0 forks source link

Typeを追加 #20

Closed Yokomi422 closed 3 months ago

Yokomi422 commented 3 months ago

やったこと

Axafy5479 commented 3 months ago

時間割の型について、授業によっては週に2度講義があるものがあり、今回のコードでは表現出来ないように思います。 また、集中講義の場合は曜日か時限のどちらかの変数が邪魔になりそうです。

dayとperiodを持つ曜限専用の型(DayPeriodのような?)を作り、 (DayPeriod)[] | string と表現するのはどうでしょうか。stringの場合は集中講義です。

Yokomi422 commented 3 months ago

DayPeriod型を作るのはいいと思います! 集中講義は(DayPeriod)[] | stringだとどうやって表せますか?

集中講義は夏休みなどで短い期間に連続して行われる授業ですよね

Axafy5479 commented 3 months ago

集中講義がいつ行われるかは表現しない方針で考えていました。 スクレイピング結果のjsonにも

"periods": ["集中"],

としか書かれていないです。

なので適当な文字列でも入れておけば良いかと思いstringと書きました

Yokomi422 commented 3 months ago

stringで現させるものが限定されそうなので、 dayPeriod: DayPeriod | "集中";など文字列のリテラル型で表現するのはどうでしょうか?

Axafy5479 commented 3 months ago

なるほど、分かりやすいですね! その実装でお願いします

Yokomi422 commented 3 months ago

@Axafy5479 修正しました! https://github.com/ut-code/syllabus-next/pull/20/commits/147b505e16cab65b37ab1e8e37c83375a26be122

Axafy5479 commented 3 months ago

ありがとうございます。

ですが、このdayPeriodの定義で週に2度開講される講義は表現できるのでしょうか? DayPeriod[] | stringのように配列にする必要があるのでは、と思っています

例えば次の講義です。

  {
    "code": "30003",
    "type": "基礎",
    "category": "数理科学",
    "semester": "S1",
    "periods": ["月2", "水1"],
    (略)
}
Yokomi422 commented 3 months ago

配列にするのを忘れていました

Yokomi422 commented 3 months ago

配列にしました https://github.com/ut-code/syllabus-next/pull/20/commits/e0bc098f1d79dc9d8ee86f9f4f5c53be7568311f

Axafy5479 commented 3 months ago

ありがとうございます! 良さそうに見えます

最後に一つだけ質問なのですが、dayはmon, tueのような英語表記ですか? それとも漢字表記の予定ですか? 授業詳細モーダルの実装の時、それに対応しようかと思います

Yokomi422 commented 3 months ago

今まで通り、曜日の英語の最初の3文字を入れようと思います。それも文字列リテラルの型に入れておいた方が良さそうですね

type DayPeriod = {
  day: "mon" | "tue" | "wed" | "thu" | "fri" | "sat";
  period: 1 | 2 | 3 | 4 | 5 | 6;
};
Axafy5479 commented 3 months ago

この変更とても助かります!

Yokomi422 commented 3 months ago

こちらこそ改善できてよかったです!