可选属性
接口里的属性不全是必须的,有些可以不用
一个示例????:
- 首先创建一个带有可选属性的接口
// 创建一个人的接口, 姓名,年龄必须,但是签名是可选的interface Person { name: string, age: number, signature?: string // 属性后加?表示可选}
- 然后定义打印此人签名的函数
// 打印签名的函数 因为是function printSignature(person: Person): void { let signature ; if (person.signature) { signature = person.signature; } else { signature = "这个家伙很懒,什么也没留下"; } console.log(signature)}
因为是可选属性,所以当有signature
属性时就打印,没有就答应函数内部默认的一句话--“这个家伙很懒,什么也没留下”
- 定义两个符合要求的参数一个有这个属性,一个没
let person1 = { name: "邢走在云端", age: 21, signature: "you async, I await"}let person2 = { name: "张三", age: 22}
- 调用函数
printSignature(person1); // you async, I awaitprintSignature(person2); // 这个家伙很懒,什么也没留下
- 查看结果
上述两个参数都是符合要求的,所以打印出需要的语句(上述注释处)
完整代码????
// 创建一个人的接口, 姓名,年龄必须,但是签名是可选的interface Person { name: string, age: number, signature?: string}// 打印签名的函数function printSignature(person: Person): void { let signature ; if (person.signature) { signature = person.signature; } else { signature = "这个家伙很懒,什么也没留下"; } console.log(signature)}// 定义两个参数,一个有signature,一个没有signature,都不会报错,因为let person1 = { name: "邢走在云端", age: 21, signature: "you async, I await"}let person2 = { name: "张三", age: 22}printSignature(person1);printSignature(person2);
只读属性
只能在第一次赋值,后面不能再进行修改
很容易理解,直接上代码????
// 创建一个人的接口, 姓名,年龄必须,但是签名是可选的interface Person { name: string, age: number, readonly signature: string}// 打印签名的函数function printSignature(person: Person): void { // person.signature = "我想改你"; // Cannot assign to 'signature' because it is a read-only property. console.log(person.signature)}// 定义两个参数,一个有signature,一个没有signature,都不会报错,因为let person = { name: "邢走在云端", age: 21, signature: "you async, I await"}printSignature(person);
上面函数内改变只读属性就会报错????
person.signature = "我想改你"; // Cannot assign to 'signature' because it is a read-only property.