📌

【学習】TypeScriptとJAVAの比較

2025/01/16に公開

ある都市の緯度 latitude、経度 longitude が与えられるので、赤道(equator)、本初子午線(prime meridian)を基準として、その都市が東西南北どこに位置しているかを文字列で返す、calculateLocation という関数を作成してください。文字列は「緯度/経度」の順で表記してください。

TypeScript

function calculateLocation(latitude: number, longitude: number): string {
        return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);

    function getLatitudeDirection(latitude: number): string {
        if (latitude === 0) {
            return "equator";
        } else if (latitude > 0) {
            return "north";
        } else {
            return "south";
        }
    }

    function getLongitudeDirection(longitude: number): string {
        if (longitude === 0) {
            return "prime meridian";
        } else if (longitude > 0) {
            return "east";
        } else {
            return "west";
        }
    }
}

JAVA

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

class Solution {
    public static String calculateLocation(double latitude, double longitude) {
        return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);
    }

    private static String getLatitudeDirection(double latitude) {
        if (latitude == 0) {
            return "equator";
        } else if (latitude > 0) {
            return "north";
        } else {
            return "south";
        }
    }

    private static String getLongitudeDirection(double longitude) {
        if (longitude == 0) {
            return "prime meridian";
        } else if (longitude > 0) {
            return "east";
        } else {
            return "west";
        }
    }
}

比較

No. 項目 TypeScript Java
1 ファイル全体の構造 - 関数はグローバルに記述可能。
- 関数内にネストして他の関数を定義できる。
- すべてのメソッドはクラス内に定義する必要がある。
- メソッドのネストは不可。
2 型注釈 - 引数と戻り値に型注釈を明記する。
- 型はコロン : の後に記述。
- 引数と戻り値に型を明記する。
- 型は変数や戻り値の前に記述。
3 比較演算子 - 厳密等価演算子 === を使用して、型と値を比較。 - 比較演算子 == を使用してプリミティブ型を比較。
4 関数のスコープ - 関数を他の関数内にネストして定義可能。
- スコープは外側の関数に閉じる。
- メソッドをネストして定義不可。
- メソッドはクラススコープ内で独立して存在。
5 アクセシビリティ修飾子 - public, private などの修飾子は不要。
- エクスポート時に制御可能。
- 修飾子 (public, private, protected) を必ず明記。
- 省略時はパッケージプライベート。
6 文字列の結合 - テンプレートリテラルや + 演算子を使用。 - 文字列結合に + を使用。

※JAVAは、セミコロン「;」もないと、テスト通過せず。

1. ファイル全体の構造

TypeScript

function calculateLocation(latitude: number, longitude: number): string {
    // メインの関数
    return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);

    // ネストされた関数
    function getLatitudeDirection(latitude: number): string { ... }
    function getLongitudeDirection(longitude: number): string { ... }
}

Java

class Solution {
    public static String calculateLocation(double latitude, double longitude) {
        // メインのメソッド
        return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);
    }

    // クラス内で独立したメソッド
    private static String getLatitudeDirection(double latitude) { ... }
    private static String getLongitudeDirection(double longitude) { ... }
}

2. 型注釈

TypeScript

function calculateLocation(latitude: number, longitude: number): string { ... }

Java

public static String calculateLocation(double latitude, double longitude) { ... }

3. 比較演算子

TypeScript

if (latitude === 0) { return "equator"; }

Java

if (latitude == 0) { return "equator"; }

4. 関数のスコープ

TypeScript

function calculateLocation(latitude: number, longitude: number): string {
    function getLatitudeDirection(latitude: number): string { ... }
    function getLongitudeDirection(longitude: number): string { ... }
}

Java

private static String getLatitudeDirection(double latitude) { ... }
private static String getLongitudeDirection(double longitude) { ... }

5. アクセシビリティ修飾子

TypeScript

function calculateLocation(latitude: number, longitude: number): string { ... }

Java

public static String calculateLocation(double latitude, double longitude) { ... }
private static String getLatitudeDirection(double latitude) { ... }

6. 文字列の結合

TypeScript

return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);

Java

return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);

Discussion