interface SquareConfig { color?: string; width?: number; } function createSquare(config: SquareConfig): { color: string; area: number } { // ... } let mySquare = createSquare({ colour: "red", width: 100 });
ts Ralat akan dilemparkan semasa menyusun kod ini, tetapi ia tidak akan dilemparkan dengan menggunakan dua kaedah berikut. Apakah prinsipnya? Penjelasan di laman web rasmi adalah di luar pemahaman saya. Ia hanya membuatkan saya rasa sintaks ts begitu santai...
let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);
atau
let squareOptions = { colour: "red", width: 100 }; let mySquare = createSquare(squareOptions);
Tiada ralat akan dilaporkan dengan cara ini Apabila menggunakan penegasan (sebagai/<>), adakah antara muka akan dibandingkan mengikut peraturan apa? Kemudian salin objek literal kepada pembolehubah Saya tahu ini adalah penunjuk rujukan kepada objek, tetapi mengapa sifat tambahan tidak dapat dikesan? Alamat laman web rasmi
Contoh pertama:
as
不是断言吧as
是强制转化 就说明你知道你要做的事情 当然 ts 也就让你编译过了第二个例子 好像本来就应该过的吧
color
你又不是一定要;colour
ialah atribut lainSebab mengapa ia tidak digunakan sebelum ini ialah ts mempunyai semakan unik untuk literal objek
seperti penukaran jenis paksa, yang memaksa pembolehubah digunakan sebagai jenis lain Anda bertanggungjawab untuk sebarang masalah semasa masa jalan.
Logik pengesanan menggunakan literal objek untuk menetapkan objek adalah berbeza daripada mekanisme menggunakan pembolehubah untuk menetapkan objek.