ホームページ ウェブフロントエンド jsチュートリアル 【面接の必需品】ommon TypeScript 面接の質問

【面接の必需品】ommon TypeScript 面接の質問

Sep 11, 2024 am 06:41 AM

【Interview Essentials】ommon TypeScript Interview Questions

github: https://github.com/Jessie-jzn
ウェブサイト:https://www.jessieontheroad.com/

1. TypeScript を使用する理由

1.静的型チェック

TypeScript の主な利点は静的型チェックであり、実行時ではなくコンパイル段階で一般的なエラーを検出するのに役立ちます。これにより、コードの信頼性と安定性が向上します。

2.強化されたコード編集エクスペリエンス

TypeScript の型システムにより、エディターでのより正確なコード補完、リファクタリング、ナビゲーション、ドキュメント機能が可能になり、開発効率が大幅に向上します。

3.コードの保守性の向上

型宣言により、コードの意図と構造を理解しやすくなり、チーム開発環境では特に有益です。

4.高度な言語機能

TypeScript は、インターフェイス、列挙型、ジェネリックなど、JavaScript には存在しない高度な機能をサポートしており、より構造化されたスケーラブルなコードの開発を容易にします。

5.より良いツールサポート

TypeScript は、生成された JavaScript コードを最適化するためのさまざまなコンパイラ オプションを提供し、TypeScript を互換性のある JavaScript にコンパイルすることでさまざまな JS 環境をサポートします。

2. TypeScript と JavaScript

TypeScript JavaScript
Type System Static typing with compile-time type checks. Types can be specified for variables, function parameters, and return values. Dynamic typing with runtime type checks, which can lead to type-related runtime errors.
Type Annotations Supports type annotations to explicitly define types. E.g., let name: string = "Alice"; No type annotations. Types are determined at runtime.
Compilation Requires compilation to JavaScript. TypeScript compiler checks for type errors and generates equivalent JavaScript code. Runs directly in browsers or Node.js without a compilation step.
Object-Oriented Programming Richer OOP features such as classes, interfaces, abstract classes, and access modifiers. Basic OOP features with prototype-based inheritance.
Advanced Features Includes all ES6 and ES7 features, plus additional features like generics, enums, and decorators. Supports ES6 and later standards, but lacks some of the advanced features provided by TypeScript.
TypeScript JavaScript 型システム コンパイル時の型チェックによる静的型付け。変数、関数パラメータ、戻り値には型を指定できます。 実行時型チェックを使用した動的型付け。これにより、型関連の実行時エラーが発生する可能性があります。 型の注釈 型を明示的に定義するための型アノテーションをサポートします。たとえば、name: string = "Alice"; とします。 型の注釈はありません。型は実行時に決定されます。 コンパイル JavaScript へのコンパイルが必要です。 TypeScript コンパイラは型エラーをチェックし、同等の JavaScript コードを生成します。 コンパイル手順なしでブラウザまたは Node.js で直接実行されます。 オブジェクト指向プログラミング クラス、インターフェース、抽象クラス、アクセス修飾子など、より豊富な OOP 機能。 プロトタイプベースの継承を備えた基本的な OOP 機能。 高度な機能 ES6 および ES7 のすべての機能に加え、ジェネリック、列挙、デコレータなどの追加機能が含まれます。 ES6 以降の標準をサポートしますが、TypeScript が提供する高度な機能の一部がありません。 テーブル>

3. TypeScript의 기본 데이터 유형

  • 부울: 참 또는 거짓 값을 나타냅니다.
  • 숫자: 정수와 부동소수점 숫자를 모두 나타냅니다.
  • 문자열: 작은따옴표나 큰따옴표를 사용하여 텍스트 데이터를 나타냅니다.
  • Array: type[] 또는 Array을 사용하여 지정된 유형의 값 컬렉션을 나타냅니다.
  • 튜플: 지정된 유형의 고정된 수의 요소로 구성된 배열을 나타냅니다.
  • Enum: 명명된 상수 집합을 나타냅니다.
  • 모두: 모든 유형의 값을 나타냅니다. 유형 검사를 제공하지 않습니다.
  • Void: 값이 없음을 나타내며, 값을 반환하지 않는 함수의 반환형으로 흔히 사용됩니다.
  • Null 및 정의되지 않음: 각각 값이 없음과 초기화되지 않은 상태를 나타냅니다.
  • Never: 오류가 발생하거나 무기한 실행되는 함수와 같이 절대 발생하지 않는 값을 나타냅니다.
  • 객체: 기본이 아닌 유형을 나타냅니다.

4. TypeScript의 제네릭이란 무엇입니까? 어떻게 사용되나요?

제네릭을 사용하면 유형 안전성을 유지하면서 함수, 클래스 및 인터페이스가 모든 유형에서 작동할 수 있습니다.

예:

function identity<T>(arg: T): T {
  return arg;
}

const numberIdentity = identity<number>(42);
const stringIdentity = identity<string>("Hello");

이 예에서 ID 함수는 일반 를 사용하여 모든 유형의 값을 허용하고 반환할 수 있습니다.

5. Unknown과 TypeScript의 Any의 차이점

  • 모든 유형: 모든 유형의 값을 나타내며 모든 유형 검사를 우회합니다. 유형 확인 없이 임의의 값을 할당할 수 있습니다.
  • 알 수 없는 유형: 알 수 없는 유형을 나타냅니다. 알 수 없는 유형의 값은 사용하기 전에 확인해야 하며, 이는 유형이 불확실한 값을 처리하는 더 안전한 방법을 제공합니다.
let anyVar: any;
let unknownVar: unknown;

anyVar = 5;
anyVar.toUpperCase(); // No compile-time error, but might cause runtime error

unknownVar = "Hello";
if (typeof unknownVar === "string") {
  unknownVar.toUpperCase(); // Type check ensures safety
}

6. readonly 수식어와 const 키워드의 차이점

  • 읽기 전용 수정자: 초기화 후 객체 속성을 변경할 수 없도록 만들기 위해 객체 속성에 사용됩니다.
  • const 키워드: 불변 참조로 변수를 선언하는 데 사용됩니다. 개체의 속성은 계속 수정할 수 있습니다.
const obj = { name: "John" };
obj.name = "Doe"; // Allowed

interface User {
  readonly id: number;
  name: string;
}

const user: User = { id: 1, name: "John" };
user.name = "Doe"; // Allowed
user.id = 2; // Error, `id` is readonly

7. TypeScript의 데코레이터

데코레이터는 메타데이터를 추가하거나 클래스, 메소드, 속성 또는 매개변수를 수정할 수 있는 특수 TypeScript 기능입니다.

유형:

  • 클래스 데코레이터: 클래스 동작을 수정하거나 메타데이터를 추가하기 위해 클래스 생성자에 적용됩니다.
  • 메소드 데코레이터: 동작을 변경하거나 메타데이터를 추가하는 메소드에 적용됩니다.
  • 접속자 데코레이터: 접근자의 동작을 수정하기 위해 접근자를 가져오거나 설정하는 데 적용됩니다.
  • 속성 데코레이터: 메타데이터를 추가하거나 해당 동작을 수정하기 위해 클래스 속성에 적용됩니다.
  • 매개변수 데코레이터: 메타데이터를 추가하기 위해 메소드 매개변수에 적용됩니다.

예:

  • 클래스 데코레이터:
function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

@sealed
class Greeter {
  greeting: string;
  constructor(message: string) {
    this.greeting = message;
  }

  greet() {
    return `Hello, ${this.greeting}`;
  }
}

  • 메서드 데코레이터:
function logMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`Method ${propertyName} called with args: ${JSON.stringify(args)}`);
    return originalMethod.apply(this, args);
  };
}

class Calculator {
  @logMethod
  add(a: number, b: number): number {
    return a + b;
  }
}

사용법:

데코레이터는 tsconfig.json에서 ExperimentDecorators를 true로 설정하여 활성화됩니다.

8. 인터페이스와 타입의 차이점

interfacetype은 모두 객체 유형을 정의하는 데 사용되지만 몇 가지 차이점이 있습니다.

일>
interface type
Basic Usage Defines the shape of objects, including properties and methods. Defines primitive types, object types, union types, intersection types, etc.
Extension Supports declaration merging. Multiple declarations of the same interface are automatically merged. Does not support declaration merging.
Union and Intersection Types Not supported. Supports union (`
Primitive Type Aliases Not supported. Supports aliasing primitive types.
Mapped Types Not supported. Supports mapped types.
Class Implementation Supports class implementation using implements. Does not support direct class implementation.
인터페이스

입력

기본 사용법 속성 및 메소드를 포함한 객체의 모양을 정의합니다. 기본 유형, 객체 유형, 결합 유형, 교차 유형 등을 정의합니다. 확장 선언 병합을 지원합니다. 동일한 인터페이스의 여러 선언은 자동으로 병합됩니다. 선언 병합을 지원하지 않습니다. 통합 및 교차 유형 지원되지 않습니다. 통합 지원(` 기본 유형 별칭 지원되지 않습니다. 앨리어싱 기본 유형을 지원합니다. 매핑 유형 지원되지 않습니다. 매핑 유형을 지원합니다. 수업 구현 구현을 사용한 클래스 구현을 지원합니다. 직접 클래스 구현을 지원하지 않습니다. 이러한 질문과 답변은 기본 개념과 실제 사용법을 다루며 TypeScript 인터뷰를 준비하는 데 도움이 됩니다.

以上が【面接の必需品】ommon TypeScript 面接の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

TypeScriptの高度な条件付きタイプ TypeScriptの高度な条件付きタイプ Aug 04, 2025 am 06:32 AM

TypeScriptの高度な条件タイプは、TextEndsu?X:Y Syntaxを介してタイプ間の論理的判断を実装します。そのコア機能は、分散条件タイプ、推測タイプの推論、および複雑なタイプのツールの構築に反映されます。 1.条件付きタイプは、裸の型パラメーターに分散され、string [] | number []を取得するためにtoArrayなどのジョイントタイプを自動的に分割できます。 2.分布を使用してフィルタリングおよび抽出ツールを構築します。除外textendsuを除く除外:t、抽出抽出抽出extract textendsu?t:never、およびnullable filters null/undefined。 3

マイクロフロントエンドアーキテクチャ:実用的な実装ガイド マイクロフロントエンドアーキテクチャ:実用的な実装ガイド Aug 02, 2025 am 08:01 AM

MicrofRontendsSolvessCallingChallengesimSimSimSimsByEnablingEndependDevelymentAndDeployment.1)chooseanintegrations trategy:usemodulefederationinwebpack5forruntimeloadingindingindrueindopendence、build-time-integrationforsimplestups、oriframes/webcomponents

JavaScriptで配列の長さを見つける方法は? JavaScriptで配列の長さを見つける方法は? Jul 26, 2025 am 07:52 AM

JavaScriptアレイの長さを取得するには、組み込みの長さプロパティを使用できます。 1. .length属性を使用して、constfruits = ['apple'、 'banana'、 'orange']; console.log(fruits.length); // output:3;など、配列内の要素の数を返します。 2.この属性は、文字列、数字、オブジェクト、または配列などのあらゆるタイプのデータを含む配列に適しています。 3.長さの属性は自動的に更新され、要素が追加または削除されると、その値はそれに応じて変更されます。 4.ゼロベースのカウントを返し、空の配列の長さは0です。 5.長さの属性は、手動で変更して配列を切り捨てたり拡張したりすることができます。

javascriptのvar、let、constの違いは何ですか? javascriptのvar、let、constの違いは何ですか? Aug 02, 2025 pm 01:30 PM

varisfunction-scoped、canbereasSigned、hoisted witHedededined、andattachedtotheglobalwindow object;

JavaScriptのプロキシを理解し、APIを反映します JavaScriptのプロキシを理解し、APIを反映します Jul 26, 2025 am 07:55 AM

プロキシと反射APIは、JavaScriptでオブジェクト操作を傍受およびカスタマイズするために使用される強力なツールです。 1。ターゲットオブジェクトのラップと「トラップ」を定義することにより、GETなどの操作をブロックし、ログ、検証、読み取り専用コントロールなどの関数を実装します。 2。反射は、デフォルトの動作の一貫性と正しさを確保し、コードメンテナビリティを改善するために、プロキシトラップに対応するメソッドを提供します。 3.実際のアプリケーションには、VUE3レスポンシブシステム、データ検証、デバッグログ、不変のオブジェクト、APIシミュレーションが含まれます。 4.パフォーマンスオーバーヘッド、組み込みのオブジェクトの複雑な動作、この結合の問題、およびネストされたオブジェクトを再帰的にプロキシ化する必要があります。 5.合理的な使用は、効率的でデバッグ可能で、リアクティブに構築できます

解決されたダブルチョコレートパズルを生成:データ構造とアルゴリズムのガイド 解決されたダブルチョコレートパズルを生成:データ構造とアルゴリズムのガイド Aug 05, 2025 am 08:30 AM

この記事では、ダブルチョコパズルゲーム用の溶媒があるパズルを自動的に生成する方法を詳細に説明します。効率的なデータ構造 - 境界情報、色、状態を含む2Dグリッドに基づくセルオブジェクトを紹介します。これに基づいて、再帰的なブロック認識アルゴリズム(深さfirst検索と同様)と、それを反復パズル生成プロセスに統合する方法について詳しく説明し、生成されたパズルがゲームのルールを満たし、溶媒があることを確認します。この記事では、サンプルコードを提供し、生成プロセスにおける重要な考慮事項と最適化戦略について説明します。

JSのオプションチェーン(?。)とは何ですか? JSのオプションチェーン(?。)とは何ですか? Aug 01, 2025 am 06:18 AM

optionalchaining(?。)indavascriptsafelyAccessededpropertiesbyReturningifinedifineparturypart ofthechainisnullorundeded、dietlowssafeacesteplynestededededededededobjectproperties、suchasuser.profile?

JavaScriptを使用してDOM要素からCSSクラスを削除するにはどうすればよいですか? JavaScriptを使用してDOM要素からCSSクラスを削除するにはどうすればよいですか? Aug 05, 2025 pm 12:51 PM

JavaScriptを使用してDOM要素からCSSクラスを削除するための最も一般的で推奨される方法は、クラスリストプロパティのremove()メソッドを使用しています。 1。要素を使用して、単一または複数のクラスを安全に削除するには、クラスが存在しなくてもエラーは報告されません。 2.代替方法は、クラス名プロパティを直接操作し、文字列交換でクラスを削除することですが、定期的なマッチングまたは不適切な空間処理のために問題を引き起こすのは簡単であるため、推奨されません。 3.最初にクラスが存在するかどうかを判断してから、element.classlist.contains()を介して削除できますが、通常は必要ありません。 4.クラスリスト

See all articles