检查打字稿中通用参数的类型

时间:2019-02-18 16:38:10

标签: typescript

我正在使用打字稿在React应用程序中工作。其中一个函数在其中一个变量中接收通用类型。

如何检查变量的类型T?这可能吗?

MyFunction<T>(newValues: Array<T>) {
    if (typeof T === "string") {
        // do some stuff
    }
}

1 个答案:

答案 0 :(得分:1)

嗯,有可能。您可以使用user defined type guards在运行时检查对象的类型。请记住,您正在检查参数的类型,而不是常规类型T本身。理想情况下,您的函数应该在不确切知道T是什么的情况下工作,而只是在调用该方法时将其用作占位T的占位符。

但是,您需要注意,因为在尝试区分两个或多个已知类型时(而不是在确定泛型的类型时)会使用类型保护。

请记住,如果需要确定泛型的类型,则实际上可能不需要泛型。如果您知道可以调用一个函数的可能类型是什么,并且这些类型很重要,我建议您研究union types

TypeScript的意图不是在运行时更改JavaScript,而是使工具和开发人员更容易使用JavaScript进行开发。 TypeScript的所有魔力都应该在代码发送到浏览器之前发生。

希望有帮助!