打字稿:什么是类型URL?

use*_*685 19 typescript1.8

我想确保string类型的接口成员是一个正式有效的URL.我可以将成员声明为URL但我不能为其分配一个有效URL的字符串.

interface test {
    myurl: URL;
}

var a : test;
a.myurl = "http://www.google.ch"
Run Code Online (Sandbox Code Playgroud)

编译时我得到:

类型"字符串"不能指定为"URL"类型.

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

什么是URL有用?

我正在使用打字稿1.8.10

Spi*_*lis 21

AFAICT,URL是打字稿"内置"功能,基于WhatWG Url规范.链接到页面既有基本原理,也有示例.

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

Typescript具有如下设置的相应类型定义(从typescript 2.1.5开始):in 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

可以在WhatWG Url规范中找到更多构造函数,示例和解释.