In Typescript, the generic type of a const variable with inferred type can be narrowed down using the as
keyword or the is
type guard.
For example, suppose we have a const variable arr
with inferred type Array<number | string>
:
const arr = [1, "two", 3, "four"] // inferred type: Array<number | string>
We can narrow down the generic type to Array<string>
using the as
keyword:
const stringArr = arr.filter((val) => typeof val === "string") as Array<string>
Alternatively, we can use the is
type guard to narrow down the generic type:
function isString(val: any): val is string {
return typeof val === "string"
}
const stringArr = arr.filter(isString) // inferred type: Array<string>
Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss
Asked: 2023-06-08 15:01:45 +0000
Seen: 18 times
Last updated: Jun 08 '23
How can one ensure that sub-classes have uniform method parameters in TypeScript?
Can a TypeScript definition for icon names be provided in MaterialCommunityIcons for React Native?
How can TypeScript be used to save a file in an Excel add-in?
What is the Angular Type script NG Zorro event for radio buttons?
What is the process for implementing a Many to Many relationship using NestJs Sequlize and Mysql2?
What is the method for defining a Fixed length Array in TypeScript?
What difficulties are encountered in the installation of react-router-dom using typescript?