让我们想象一个具有属性A
和B
或的对象C
,例如:
const temp = {
A: 1,
B: 2,
}
Run Code Online (Sandbox Code Playgroud)
或者
const temp = {
C: 3,
}
Run Code Online (Sandbox Code Playgroud)
直觉上,我认为这种类型为:
type T = {A: number, B: number} | {C: number};
const valid: T = {A: 1, B: 2};
const alsoValid: T = {C: 3};
// Should complain but it does not
const invalid: T = {A: 1, B: 2, C: 3};
// Also should complain
const alsoInvalid: T = {A:1, C: 3};
Run Code Online (Sandbox Code Playgroud)
但是 TS 将此类类型视为 …
编译并运行程序后:
class Person
{
private string surname;
public string Name { get; set; }
public string Surname
{
get { return surname;}
set
{
surname = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以看到,从链接的图像中,没有显示“名称”私有字段。只是 Visual Studio 无法识别它,还是发生了其他事情?
我已经多次阅读诸如“至于您的两个 C# 示例,一个只是另一个的语法糖。” 或“编译时将创建一个支持字段。”。
有什么问题?