我开始学习脚本语言,特别是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
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.
下面是一些打字脚本: let markdown = <HTMLTextAreaElement>document.getElementById(id);
let markdownoutput = <HTMLLabelElement>document.getElementById(output); 在上面的代码中,在使用element by id选择某些东西之前,我们声明了元素类型param.(<HTMLTextAreaElement>)它工作得很好。但是我们从中得到的好处是什么呢? 有人能帮我吗? typescript是如何处理这个问题并帮助我们的呢? 提前
Flow有一个方便的,它可以获得调用类型F的函数的返回类型,第一个参数(可选)作为类型T,第二个参数等等。所以我们可以这样做:
type First = <T>(Array<T>) => T | void;
type ShouldBeOptionalString = $Call<First, Array<string>>; // ShouldBeOptionalString is string | void
TypeScript能实现同等的功能吗?我知道TypeScript提供的,但它不能根据参数类型计算返回类型:
type First =
如果一个函数的一个参数是两个类型的并集,我如何才能正确地推断返回类型? 我已经尝试了以下条件类型,但它不起作用(参见typescript错误的内联注释): TypeScript Playground type Status = 'statusType'
type GoalActivity = 'goalActivityType'
type Argument = { type: 'status'; status: Status | null } | { type: 'goalActivity'; goalActivity: Go
我正在阅读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中实现一些东西。我将张贴Java的等价物,希望有人能帮助我打字版本。 interface BaseChannel {
void send();
}
public class SampleChannel implements BaseChannel {
@Override
public void send() {
}
}
public class SampleDispatch {
Class<? extends BaseChannel>[] getChannels() {
Class
陷入了一些我无法想象的事情中。
我希望在我的TypeScript包中有一个如下函数:
function example<U>(key: keyof U) {
return function<T extends U[typeof key]>(
value: T,
cb: (obj: unknown /* not sure what this should be typed as */) => void
) {
// ...
}
}
并事先通过未知的联盟进入它:
type Union =
| {
color: