TypeScript:什么是类型URL?

47

我想确保接口成员的类型为字符串且是一个正式有效的URL。我可以将成员声明为URL,但无法将一个有效的URL字符串分配给它。

interface test {
    myurl: URL;
}

var a : test;
a.myurl = "http://www.google.ch"

编译时出现以下错误:

类型“string”不能赋值给类型“URL”。

我是否必须使用装饰器来完成我的任务(https://www.typescriptlang.org/docs/handbook/decorators.html)?

URL有什么用途?

我正在使用typescript 1.8.10版本

1个回答

64

据我所知,URL是一种TypeScript的“内置”功能,基于WhatWG Url规范。链接的页面既有理由,又有示例。

简而言之,它提供了一种结构化使用URL的方式,同时确保它们是有效的。在尝试创建无效URL时,它会抛出错误。

TypeScript在相应的类型定义中设置如下(截至TypeScript 2.1.5):在node_modules/typescript/lib/lib.es6.d.ts中:

interface URL {
    hash: string;
    host: string;
    hostname: string;
    href: string;
    readonly origin: string;
    password: string;
    pathname: string;
    port: string;
    protocol: string;
    search: string;
    username: string;
    toString(): string;
}

declare var URL: {
    prototype: URL;
    new(url: string, base?: string): URL;
    createObjectURL(object: any, options?: ObjectURLOptions): string;
    revokeObjectURL(url: string): void;
}

对于您的用例,您应该像这样使用它:

a.myurl = new URL("http://www.google.ch");

更多构造函数、示例和说明可以在WhatWG Url specifications中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接