我开始学习脚本语言,特别是JavaScript。这很好,当我和Angular2一起学习TypeScript时,我开始感到困惑。
我意识到TypeScript可以定义内置类型,如字符串、数字和对象,而TypeScript将在编译时生成JavaScript。
这里开始了我的困惑,TypeScript是如何在JavaScript上定义泛型类型的,因为JavaScript是基于原型的语言,它不能定义类型。
例如,如何将下列代码编译到JavaScript中。
interface Person {
name : string,
age : number
}
有人能解释一下吗?脚本很有趣,但有时
我试图在TypeScript中实例化一个泛型类。
在C#,我会这样做的
class MyPacket<T> {...}
var t = typeof(...);
var genericContainer = typeof(MyPacket<>).MakeGenericType(new[]{ t });
var instance = Activator.CreateInstance(genericContainer);
我的用例是,我正在接收来自网络的消息。我还有一个EventEmitter,它期望被调用的类型是正确的。
(msg: Message): void =&g
下面是一些打字脚本: let markdown = <HTMLTextAreaElement>document.getElementById(id);
let markdownoutput = <HTMLLabelElement>document.getElementById(output); 在上面的代码中,在使用element by id选择某些东西之前,我们声明了元素类型param.(<HTMLTextAreaElement>)它工作得很好。但是我们从中得到的好处是什么呢? 有人能帮我吗? typescript是如何处理这个问题并帮助我们的呢? 提前
TypeScript 3.0引入了一种名为unknown的新类型,它正是这样做的。就像any一样,任何值都可以分配给unknown;但是,与any不同,您不能使用unknown类型访问值上的任何属性,也不能调用/构造它们。此外,unknown类型的值只能分配给unknown或any。
例如,将上面的示例替换为使用unknown而不是any强制将foo的所有用法转换为一个错误:
let foo: unknown = 10;
// Since `foo` has type `unknown`, TypeScript
// errors on each of these usages.
我在使用typescript的react应用程序中工作。其中一个函数在其中一个变量中接收泛型类型。
如何检查变量的T类型?这个是可能的吗?
MyFunction<T>(newValues: Array<T>) {
if (typeof T === "string") {
// do some stuff
}
}
我正在阅读Typescript中的泛型。甚至没有意识到他们就在那里:
var list: number[] = [1, 2, 3];
// Alternatively, using the generic array type
var list: Array<number> = [1, 2, 3];
这让我好奇,如果我说:
var list = [1,2,3]
Typescript会推断出类型,如果是这样,它会推断出什么类型。所以我想知道是否有一种方法可以让Typescript显示变量的类型。
如果一个函数的一个参数是两个类型的并集,我如何才能正确地推断返回类型? 我已经尝试了以下条件类型,但它不起作用(参见typescript错误的内联注释): TypeScript Playground type Status = 'statusType'
type GoalActivity = 'goalActivityType'
type Argument = { type: 'status'; status: Status | null } | { type: 'goalActivity'; goalActivity: Go
使用类型记录3.0+。请参见以下涉及泛型类型变量的简单设置:
abstract class BaseClass {
public abstract merge<T>(model?: T): T;
}
class MyClass extends BaseClass {
public Value: string;
public merge<MyClass>(model?: MyClass): MyClass {
this.Value += model.Value; // <--Property 'Value' does not
我有一个基本枚举,如下所示 enum MyEnum<T> {
val initialValue: T
val minValue: T
val maxValue: T
} 我有几种方法,比如: protected fun setEngineValue(myEnum: MyEnum<Float>, value: Float): Boolean {}
protected fun setEngineValue(myEnum: MyEnum<Int>, value: Int): Boolean {} 我想把它合并到一个函数中,在这个函数中
我用TypeScript编写了一个泛型类,我想要定义一个新类型,这样可以更容易地重用类名。
class Foo<T> {
...
}
type FooNumber = Foo<number>;
type FooString = Foo<string>;
如果我创建一个FooNumber对象,就会得到以下错误消息:
new FooNumber();
'FooNumber' only refers to a type, but is being used as a value here.ts(2693)
在C++中,我会使用decltype。这
Flow有一个方便的,它可以获得调用类型F的函数的返回类型,第一个参数(可选)作为类型T,第二个参数等等。所以我们可以这样做:
type First = <T>(Array<T>) => T | void;
type ShouldBeOptionalString = $Call<First, Array<string>>; // ShouldBeOptionalString is string | void
TypeScript能实现同等的功能吗?我知道TypeScript提供的,但它不能根据参数类型计算返回类型:
type First =
假设我有一个泛型函数的定义,它对T类型的值做了一些事情。
function doSomething<T> (t: T): void {
// do something on a value of type T
console.log(t);
}
现在,我想捕捉这个函数的类型。例如,用例可能是我想要在更复杂的类型中使用它,我可能计划在将来定义它。它的函数类型可以定义为:
type DoSomething<T> = (t: T)=>void
到目前一切尚好。然而,到目前为止,我的代码中还没有提到doSomething是DoSomething类型的。
现
我有一个通用的typescript类,有2个属性,如下-
export class WrapperModel<T>{
constructor(private testType: new () => T) {
this.getNew();
}
getNew(): T {
return new this.testType();
}
public Entity: T;
public ShowLoading: boolean;
}
然后按如下方式使用它:
this.userModel = new Wra