Ce este „Tastarea structurale pentru interfețele“ dactilografiat

voturi
17

În său blog despre typescript, Mark Rendle spune, că unul dintre lucrurile pe care le place despre ea este:

„Tipizarea structurale pentru interfețe. Într-adevăr am dori C # ar putea face asta“

Ce a vrut să spună?

Întrebat 04/10/2012 la 06:08
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
18

Practic, aceasta înseamnă că interfețele sunt comparate pe o „tastare rață“ bază, mai degrabă decât pe bază de identitate de tip.

Luați în considerare următorul cod C #:

interface X1 { string Name { get; } }
interface X2 { string Name { get; } }
// ... later
X1 a = null;
X2 b = a; // Compile error! X1 and X2 are not compatible

Și codul typescript echivalent:

interface X1 { name: string; }
interface X2 { name: string; }
var a: X1 = null;
var b: X2 = a; // OK: X1 and X2 have the same members, so they are compatible

Spec nu acoperă acest lucru în mai multe detalii, dar au clase de „branduri“ , ceea ce înseamnă același cod, scrise cu clase în loc de interfețe, ar avea o eroare. C # interfețe nu au branduri, și astfel nu pot fi convertite în mod implicit.

Cel mai simplu mod de a gândi despre el este că, dacă încerci o conversie de la interfața X la interfața Y, în cazul în care X are toți membrii Y, conversia reușește, chiar dacă X și Y ar putea să nu aibă aceleași nume.

Publicat 04/10/2012 la 06:29
sursa de către utilizator

voturi
1

Gandeste-te.

class Employee { fire: = ..., otherMethod: = ...}
class Missile { fire: = ..., yetMoreMethod: = ...}
interface ICanFire { fire: = ...}
val e = new Employee
val m = new Missile
ICanFire bigGuy = if(util.Random.nextBoolean) e else m
bigGuy.fire

Ce se întâmplă dacă am spus:

interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...

Typescript vă va permite acest lucru, C # nu va.

Ca typescript isi propune sa lucreze bine cu DOM care utilizează „vrac“ tastarea, acesta este singurul sensibil alege pentru dactilografiate.

Am lăsa la latitudinea cititorului să decidă dacă le place „dactilografiere structurale“ ... ..

Publicat 12/02/2014 la 16:40
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more