如何指定文字对象的类型并遵守 TSLint?

How to specify type of literal object and comply with TSLint?

TSLint 将这两个标记为错误:
const a = {} as MyClass; // no-object-literal-type-assertion
const a = <MyClass>{}; // no-angle-bracket-type-assertion

以及使用显式类型的建议:
let a: MyClass

但是当只使用文字而不使用赋值时你应该使用什么?
return { name: 'john' } as MyClass
return <MyClass> { name: 'john' }

在不声明变量的情况下可以使用什么替代方法?

您可以内嵌显式接口定义。从示例开始:

interface IGuy {
  name: string;
  age: number;
}
const guy: IGuy = {name: 'N', age: 1 };

通过对格式稍作改动,我们可以将相同的接口显式和匿名地内联:

const guy: { name: string, age: number } = {name: 'N', age: 1 };

它也适用于函数签名:

myFunction(guy: { name: string, age: number)) { //

这很适合对象解构:

myFunction({ name, age }: { name: string, age: number) { //

如果你的输出 return 值匹配函数 return 签名,你应该没问题,如果这对你来说没问题:

function myFunction(): { name: string, age: number} {
  return { name: 'N', age: 1 };
}