在TypeScript中,为什么我的字符串文字不被尊重

时间:2018-12-13 02:03:58

标签: typescript

我有以下代码:

type Period = "day" | "month" | "year";

let myPeriod: Period = "day";

const anyValue: any = {period: "wrong"};
myPeriod = anyValue.period;

console.log(myPeriod);

我希望myPeriod仅具有值daymonthyear

但是控制台会打印出wrong

无论何时myPeriod可能不是daymonth或“ year”之一,我如何修改我的代码以返回编译时错误?

(如果我尝试使用类似let myPeriod: Period = "wrong"的方法,它确实会在编译时捕获错误)

1 个答案:

答案 0 :(得分:1)

如果您输入的内容为any,则根据定义它可以分配给任何其他类型。同样,也可以访问任何属性,并且所访问的属性的类型为any

一般规则是避免使用any,如果您确实拥有未知类型,请使用限制性更强的unknownunknown与{{参见here 1}})

就您而言,尽管删除any

any