有没有一种方法可以强烈键入类型为“ any”的对象的属性

时间:2019-04-01 14:53:44

标签: javascript typescript

我有一个父对象,它的类型不能更改为“ any”(我在单元测试中使用this对象),并且我定义了父对象的属性,但是无论如何我做到了,总是用“ any”松散地键入。投射似乎也不会执行任何操作,直到运行时。有没有一种方法可以在运行时之前强烈键入我的属性,以便在分配虚假属性时让Typescript引发错误?

interface AType {
    bar: number
    bas: string
}

let something: any = {};

// Make this property respect 'AType' typing.
something.anythingElse = <AType>{
 bar: 1,
 bas: 'one',
};

// Doesn't throw an Error but it should
something.anythingElse.bogusAssignment = '1234';

2 个答案:

答案 0 :(得分:1)

在上面的评论之后,除了常规的类型断言外,您可能会考虑使用类型保护器

makeFork("/bin/ls")

在这里,假的分配将不起作用。

工作场所:typescript playground

编辑:对于下面的评论,这是您可以采用的另一种方法:typescript playground

答案 1 :(得分:0)

是什么使您无法给父母更强的类型?

something: Partial<{anythingElse: AType}>