typescript - 为什么打字稿中的接口有时需要严格匹配属性,有时不需要
问题描述
interface LabeledValue {
label: string;
}
function printLabel(labeledObj: LabeledValue) {
console.log(labeledObj.label);
}
let myObj = { size: 10, label: "Size 10 Object" }; // not err
let myObj1: LabeledValue = { size: 10, label: "Size 10 Object" }; // err
printLabel(myObj);
myObj 和 myObj1 都需要实现 LabeledValue 接口。为什么 myObj1 有错误?
解决方案
第一种情况不会发生错误,因为没有指定期望的类型,第二种情况key在对象和类型中不匹配,所以会发生错误
interface LabeledValue {
label: string;
size: number; // <----------- insert
// or size?: number; if you want sometimes skip it
}
function printLabel(labeledObj: LabeledValue) {
console.log(labeledObj.label);
}
let myObj = { size: 10, label: "Size 10 Object" }; // not err
let myObj1: LabeledValue = { size: 10, label: "Size 10 Object" }; // not err
printLabel(myObj);
阅读更多https://www.typescriptlang.org/docs/handbook/functions.html#optional-and-default-parameters
推荐阅读
- python - Pandas:定义 value_count() int 时选择第一次出现
- javascript - MarkLogic Node.js。如何在结果中指定返回属性
- list - Haskell检查函数是否两次返回相同的值
- database - 如果没有互联网连接,我们如何处理用户的输入
- java - 使用 Executor(新线程)将 Master/Detail Flow 应用程序连接到服务器
- groovy - 有没有办法配置允许哪些不安全的 Groovy 操作?
- plasticscm - Plastic Cloud 版本中是否有持续集成的方法?
- python - 在 aws ElasticBean Stalk 服务器上使用 os.getcwd() 读取文件时出现问题
- json - 如何在flutter中解析复杂的json数据并分配给模型?
- swift - swift导航控制器需要不对称