typescript - change - page title angular 4
Mecanografiado: diferencia entre Cadena y cadena (2)
Aquí hay un ejemplo que muestra las diferencias, lo que ayudará con la explicación.
var s1 = new String("Avoid newing things where possible");
var s2 = "A string, in TypeScript of type ''string''";
var s3: string;
String
es el tipo de cadena de JavaScript, que puede usar para crear nuevas cadenas. Nadie hace esto, ya que en JavaScript los literales se consideran mejores, por lo que s2
en el ejemplo anterior crea una nueva cadena sin el uso de la palabra clave new
y sin usar explícitamente el objeto String
.
string
es el tipo de cadena de TypeScript, que puede usar para escribir variables, parámetros y valores devueltos.
Notas adicionales...
Actualmente (feb 2013) Tanto s1
como s2
son JavaScript válido. s3
es TypeScript válido.
Uso de String
. Probablemente nunca necesite usarlo, los literales de cadena son universalmente aceptados como la forma correcta de inicializar una cadena. En JavaScript, también se considera mejor usar literales de objetos y literales de matrices también:
var arr = []; // not var arr = new Array();
var obj = {}; // not var obj = new Object();
Si realmente le gustaba la cuerda, podría usarla en TypeScript de una de estas dos maneras ...
var str: String = new String("Hello world"); // Uses the JavaScript String object
var str: string = String("Hello World"); // Uses the TypeScript string type
¿Alguien sabe la diferencia entre cadena y cadena en TypeScript? ¿Estoy en lo cierto al suponer que deberían ser lo mismo?
var a: String = "test";
var b: string = "another test";
a = b;
b = a; // this gives a compiler error!
La versión actual del compilador dice:
Type ''String'' is not assignable to type ''string''.
''string'' is a primitive, but ''String'' is a wrapper object.
Prefer using ''string'' when possible.
¿Es eso un error?
Los dos tipos son distintos en JavaScript, así como en TypeScript: TypeScript simplemente nos brinda la sintaxis para anotar y verificar los tipos a medida que avanzamos.
String
refiere a una instancia de objeto que tiene String.prototype
en su cadena de prototipo. Puede obtener dicha instancia de varias maneras, por ejemplo, new String(''foo'')
y Object(''foo'')
. Puede probar una instancia del tipo String
con el operador instanceof
, por ejemplo myString instanceof String
.
string
es uno de los tipos primitivos de JavaScript, y string
valores de string
se crean principalmente con literales, por ejemplo, ''foo''
y "bar"
, y como el tipo de resultado de varias funciones y operadores. Puede probar el tipo de string
usando typeof myString === ''string''
.
La mayoría de las veces, la string
es del tipo que debería usar; casi todas las interfaces API que toman o devuelven cadenas lo usarán. Todos los tipos primitivos JS se envolverán ( boxed ) con sus tipos de objetos correspondientes cuando los utilicen como objetos, por ejemplo, accediendo a propiedades o métodos de llamada. Dado que String
se declara actualmente como una interfaz en lugar de una clase en la biblioteca principal de TypeScript , el tipado estructural significa que la string
se considera un subtipo de String
lo que la primera línea pasa las comprobaciones del tipo de compilación.