定义可以接受stringnumberboolean基本值中的任何一个的属性的最佳方法是什么。我需要一个属性来接受任何这些原始类型作为html输入字段(可以是text / int / bool)中的值。我一直在寻找any Miss类型安全性(特别是,它不应该是对象,函数类型)。

最佳答案

您可以定义一个接受这些功能的函数,而不是一个属性。

为了使该函数专门仅接受stringnumberboolean,您将使用重载。实现签名(类型为any)实际上是不可调用的,因此它不允许其他类型。

class Example {
    storeMyThing(input: number): void;
    storeMyThing(input: boolean): void;
    storeMyThing(input: string): void;
    storeMyThing(input: any) {
        console.log(typeof input);
        console.log(input);
    }
}

var example = new Example();

// Yes
example.storeMyThing(1);
example.storeMyThing(true);
example.storeMyThing('String');

// No
example.storeMyThing(['Arr', 'Arr']);
example.storeMyThing({ prop: 'val'});

09-25 16:57