JavaScriptでは、タイプアサーションを使用して、値が特定のタイプを持っていることをタイプシステムに伝えることもできます。JavaScriptのタイプアサーションは、「タイプキャスト」として知られています。

AsキーワードまたはAngle Bracket構文を使用して、特定のタイプに値をキャストできます。たとえば、文字列であることがわかっている変数xがある場合、次の構文のいずれかを使用して文字列タイプにキャストできます。

「JS」
const x = "hello";
const y = x as string;// 'as'キーワードを使用します
const z = <string> x;//アングルブラケットを使用します
`` `

ただし、タイプキャストは実際には値のタイプを変更しないことに注意することが重要です。これは、タイプシステムに値のタイプを知っていることを伝える方法にすぎません。値が実際に指定されたタイプでない場合、ランタイムエラーまたは予期しない動作が得られる場合があります。

型キャストに加えて、タイプガードを使用して、ランタイムチェックに基づいて値のタイプを絞り込むこともできます。たとえば、文字列または数字のいずれかである可変Xがある場合、次のようなタイプガードを使用して、そのタイプを文字列のみに絞り込むことができます。

「JS」
関数ISSTRING（VALUE：ANY）：VALUE IS STRING {
  return typeof value === "string";
}

X：文字列|としますnumber = "hello";
if（isstring（x））{
  // xは「文字列」と入力するように絞り込まれました
  console.log（x.touppercase（））;
}
`` `

この例では、IssTring関数は、値パラメーターが文字列であるかどうかをチェックするタイプガードです。値は文字列構文であり、関数が特定の型であるかどうかを示すブール値を返すことをタイプシステムに伝えるタイプの述語です。if（isstring（x））ステートメントを使用すると、型はxがstringに狭くなるようになったことを知っているため、touppercase（）を安全に呼び出すことができます。
In JavaScript, you can also use type assertions to tell the type system that a value has a certain type. Type assertions in JavaScript are known as "type casting."

You can use the as keyword or the angle bracket syntax to cast a value to a specific type. For example, if you have a variable x that you know is a string, you can cast it to the string type using either of the following syntaxes:

```js
const x = "hello";
const y = x as string; // Using 'as' keyword
const z = <string> x; // Using angle brackets
```

However, it is important to note that type casting does not actually change the type of the value. It is just a way to tell the type system that you know the type of the value. If the value is not actually of the specified type, you may get runtime errors or unexpected behavior.

In addition to type casting, you can also use type guards to narrow the type of a value based on runtime checks. For example, if you have a variable x that can be either a string or a number, you can use a type guard like the following to narrow its type to just a string:

```js
function isString(value: any): value is string {
  return typeof value === "string";
}

let x: string | number = "hello";
if (isString(x)) {
  // x is now narrowed to type 'string'
  console.log(x.toUpperCase());
}
```

In this example, the isString function is a type guard that checks if the value parameter is a string. The value is string syntax is a type predicate that tells the type system that the function returns a boolean value that indicates whether the value is of a certain type. When you use the if (isString(x)) statement, TypeScript knows that x is now narrowed to type string, so you can safely call toUpperCase() on it.