【问题标题】:TypeScript: How to limit interface to variable of type object?TypeScript:如何将接口限制为类型对象的变量?
【发布时间】:2017-11-26 16:26:56
【问题描述】:

我有以下 TypeScript 界面

interface ICookieOptions
{
    name?:string;
    value?:string;
    secure?:boolean;
    session?: boolean;
    sameSite?: boolean;
}

和下面的类

class Cookie
{
     constructor(nameOrOptions: string | ICookieOptions)
     { [...]}
}

现在我可以做到以下几点:

var testOptions = 
    {
        name:"abc",
        value:"def"
        secure: false,
        session: true,
        sameSite: true
    };    
new Cookie(testOptions);
new Cookie(123);

并且没有错误。
我认为这是因为 ICookieOptions 中的所有元素都是可选的。
一旦我删除? in name?,它在构造函数上输出一个带有数字的错误。

现在:如何将 ICookieOptions 的所有元素设为可选,并限制 ICookieOptions 到“对象”类型的变量(不是数字、布尔值等)?

【问题讨论】:

标签: typescript typescript2.0


【解决方案1】:

啊,自己找到了答案。 需要在类型定义中指定& object

class Cookie
{
     constructor(nameOrOptions: string | ICookieOptions & object)
     { [...]}
}

需要 TypeScript v2.2+

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2018-09-22
    • 2023-02-26
    • 2021-12-08
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多