假设我们想接收一个函数作为参数,我们可以这样做:
function foo(otherFunc: Function): void { ... }
如果要接收构造函数作为参数:
function foo(constructorFunc: { new() }) { new constructorFunc(); } function foo(constructorWithParamsFunc: { new(num: number) }) { new constructorWithParamsFunc(1); }
为了使阅读更容易,我们可以定义一个描述构造函数的接口:
interface IConstructor { new(); } function foo(contructorFunc: IConstructor) { new constructorFunc(); }
或带有参数:
interface INumberConstructor { new(num: number); } function foo(contructorFunc: INumberConstructor) { new contructorFunc(1); }
即使使用泛型:
interface ITConstructor<T, U> { new(item: T): U; } function foo<T, U>(contructorFunc: ITConstructor<T, U>, item: T): U { return new contructorFunc(item); }
如果我们想接收一个简单的函数而不是一个构造函数,则几乎是相同的:
function foo(func: { (): void }) { func(); } function foo(constructorWithParamsFunc: { (num: number): void }) { new constructorWithParamsFunc(1); }
为了使阅读更容易,我们可以定义一个描述函数的接口:
interface IFunction { (): void; } function foo(func: IFunction ) { func(); }
或带有参数:
interface INumberFunction { (num: number): string; } function foo(func: INumberFunction ) { func(1); }
即使使用泛型:
interface ITFunc<T, U> { (item: T): U; } function foo<T, U>(contructorFunc: ITFunc<T, U>, item: T): U { return func(item); }
本文向大家介绍TypeScript 类型参数作为约束,包括了TypeScript 类型参数作为约束的使用技巧和注意事项,需要的朋友参考一下 示例 使用TypeScript 1.8,类型参数约束可以从同一类型参数列表中引用类型参数。以前这是一个错误。
为什么打字稿ES6没有检测到对象不是函数? 基于此函数,您会假设这将失败: 因为没有sortQuery对象,而是回调函数。这并没有给我任何类型的错误,这意味着typescript允许回调作为对象类型。 如何确保这会导致错误?
vue3+typescript,ref<number>作为参数传入函数时,实时响应失效,直接作为number类型传入 如果改为reactive的话,因为这样是对象,不对进行深拷贝,地址不变,但是要改很多代码,有没有类似于C++的参数的引用操作
在TypeScript中,我定义了一个,然后我想让一个函数接受一个参数,该参数的值是枚举的值之一。但是,TypeScript似乎不对值进行任何验证,并允许枚举之外的值。有办法做到这一点吗? 如果我使用而不是,我可以得到与我所要得到的类似的东西,但是我失去了enum的一些功能。
我在TypeScript中使用命名参数时遇到问题。我知道它不支持我在TypeScript中使用它的方式。 但是我该怎么做呢? 打字稿: JavaScript: 我在看(这没有成功): 有没有办法在JavaScript中的函数调用中提供命名参数? 如何将可选的命名参数添加到 TypeScript 函数参数? 我可以在 TypeScript 中做什么,以便在 JavaScript 中使用命名参数? 我