2014-02-05 2 views
1

Целью является создание нового ключевого слова 'int', которое имеет ту же семантику, что и номер именованного типа. Я знаю, что я могу достичь такого же поведения, используя тип «число», но мне было предложено ввести новое ключевое слово в машинописном тексте. Я беру интервью для исследовательского проекта в своей школе.Создание уникального ключевого слова в машинописном тексте

Пример использования регистра будет следующим:

function add(x:int, y:int) { 
    return x + y; 
} 

Я изо всех сил, чтобы достичь этого точного сценария использования. Я провел несколько часов, пройдя через documentation.

Я прочитал разделы «Типы, классы и интерфейсы», чтобы попытаться выяснить, как это сделать; пока не повезло.

Я знаю, что может достичь чего-то подобного, используя интерфейс, как так:

interface int { 
    n: number; 
} 

Но я должен был бы реализовать функцию следующим образом:

function add(x:int, y:int) { 
    return x.n + y.n; 
} 

Я совершенно новый для машинописи так любое направление очень ценится - спасибо.

Несколько основных примеров на typescriptlang.org

+0

Почему вы не хотите использовать 'number', если он имеет одинаковую семантику? – Bergi

+0

Это отличный вопрос. Меня попросил профессор моей школы « » ввести новое ключевое слово «int», где функция add (x: int, y: int) выше могла бы скомпилироваться в машинописном тексте и что она должна иметь ту же семантику, что и «число», «чтобы потенциально помочь работать над проектом с ним. Я думаю, он хочет посмотреть, могу ли я реализовать новое ключевое слово для ввода. – user548

+0

Взгляните на следующие ссылках: - [Javascript: что некоторые рекомендации о том, как определить новые типы данных] [1] - [? Есть ли библиотека для типа набора данных в JavaScript] [2] [1]: http: // stackoverflow.ru/questions/15857682/javascript-what-are-some-guidelines-on-how-to-define-new-data-types [2]: http://stackoverflow.com/questions/2342749/is-there -a-library-for-a-set-data-type-in-javascript –

ответ

0

Основываясь на вопросе, ваш профессор осознал ограничение TypeScript.

Он специально попросил вас сделать функцию добавления. Это важно, потому что TypeScript не поддерживает перегрузку операторов (например, +).

Однако вы можете написать функцию, которая принимает два int и возвращает int, используя унарный оператор добавления, как показано ниже. Только код внутри функции должен понимать, что происходит странное вещание. Все вне функции думает, что существует.

Это не помешает вам проплывать поплавки с использованием типа int.

interface int extends Number { 

} 

function add(x: int, y: int) : int { 
    return +x + +y; 
} 

var a: int = 1; 
var b: int = 2; 

var c = add(a, b); 
+0

Спасибо за вашу помощь. Я играл с расширением int до Number, но я бы не догадался использовать унарный оператор. Я новичок в машинописном тексте, другой, но интересный способ избежать js-шаблонов, я полагаю. – user548

+0

Нет проблем. Унарный + является сокращенным преобразованием в число, поэтому используйте с осторожностью ... 'var num = +" 5 "'' все в порядке, но 'var num = +" hello ";' немного странно :) – Fenton

0

Согласно http://typescript.codeplex.com/workitem/119, вы можете использовать

interface int extends number {} 

Вы также может быть интересно в feature: int and float types.

+0

Я получаю следующее сообщение об ошибке: Недопустимое выражение '+' - типы, которые, как известно, не поддерживают оператор сложения. Затем я изменил номер на Number, который является его родительским классом, но затем я получаю следующую ошибку: Недопустимое выражение '+' - типы, которые не известны для оператора добавления. Спасибо за вашу помощь, хотя я буду продолжать пытаться. – user548

Смежные вопросы