TypeScript: 유형 '{}'에 속성이 없습니다.
Visual Studio 2013을 완전 패치 적용으로 사용하고 있습니다.JQuery, JQueryUI, JSRender를 사용하려고 합니다.저도 TypeScript를 사용하려고 합니다.ts 파일에서 다음과 같은 오류가 발생합니다.
유형 '{}'에 속성 'fadeDiv'가 없습니다.
JQuery, JQueryUI 및 JSRender의 TypeScript에 대한 올바른 레퍼런스를 가지고 있다고 생각합니다만, 읽어본 바로는 d.ts의 문제인 것 같습니다.
JavaScript에는 오류가 없지만, Visual Studio에서 가능하면 오류가 있다고 말하는 것을 원하지 않습니다.두 번 다fadeDiv
JavaScript에서 언급되고 있는 것은 빨간색 줄이 그 아래에 있고 두 오류 모두 위와 같은 것을 나타냅니다.
/// <reference path="../scripts/typings/jquery/jquery.d.ts" />
/// <reference path="../scripts/typings/jqueryui/jqueryui.d.ts" />
/// <reference path="typings/jsrender/jsrender.d.ts" />
var SUCSS = {};
$(document).ready(function () {
SUCSS.fadeDiv();
});
SUCSS.fadeDiv = function () {
var mFadeText: number;
$(function () {
var mFade = "FadeText";
//This part actually retrieves the info for the fadediv
$.ajax({
type: "POST",
//url: "/js/General.aspx/_FadeDiv1",
url: "/js/sucss/General.aspx/_FadeDivList",
//data: "{'iInput':" + JSON.stringify(jInput) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, error) {
// Show the error
//alert(xhr.responseText);
},
success: function (msg) {
mFadeText = msg.d.Fade;
// Replace the div's content with the page method's return.
if (msg.d.FadeType == 0) {//FadeDivType = List
var template = $.templates("#theTmpl");
var htmlOutput = template.render(msg.d);
$("[id$=lblFadeDiv]").html(htmlOutput);
}
else {//FadeDivType = String
$("[id$=lblFadeDiv]").html(msg.d.FadeDivString);
}
},
complete: function () {
if (mFadeText == 0) {
$("[id$=lblFadeDiv]").fadeIn('slow').delay(5000).fadeOut('slow');
}
}
});
});
나중에 읽어보실 분들은 SUCSS가 네임스페이스입니다.활자본을 보면 이런 일을 하고 싶었을 것 같다.
$(document).ready(function () {
SUCSS.fadeDiv();
});
module SUCSS {
export function fadeDiv () {};
};
이 함수는 내보내기를 사용하여 공개되며, 이 함수는SUCSS.fadeDiv
호출하여 페이지 로드로 실행하다SUCSS.fadeDiv();
그게 도움이 됐으면 좋겠어요.
를 할당할 수 있습니다.any
오브젝트에 입력합니다.
let bar: any = {};
bar.foo = "foobar";
단일 필드에 대한 엄격한 유형 확인을 피하기 위해 배열 표기를 사용하여 필드에 액세스합니다.
data['propertyName']; //will work even if data has not declared propertyName
다른 방법으로는 싱글액세스의 변수를 (언캐스팅 하는) 방법이 있습니다.
(<any>data).propertyName;//access propertyName like if data has no type
첫 번째는 짧고, 두 번째는 유형(비) 캐스팅에 대해 더 명확합니다.
모든 변수 필드에 대한 유형 확인을 완전히 비활성화할 수도 있습니다.
let untypedVariable:any= <any>{}; //disable type checking while declaring the variable
untypedVariable.propertyName = anyValue; //any field in untypedVariable is assignable and readable without type checking
주의: 모든 필드의 모든 연속된 액세스는 입력되지 않으므로 단일 필드 액세스에 대한 유형 확인을 피하는 것보다 더 위험합니다.
let propertyName = data['propertyName'];
TypeScript에서 다음 코드 행을 작성할 경우:
var SUCSS = {};
의 종류SUCSS
는 할당에서 추론됩니다(즉, 빈 객체 유형).
그런 다음 몇 줄 후에 이 유형에 속성을 추가합니다.
SUCSS.fadeDiv = //...
컴파일러는 다음과 같은 이름의 속성은 없다고 경고합니다.fadeDiv
에서SUCSS
오브젝트(이러한 경고는 오타를 잡는 데 도움이 되는 경우가 많습니다).
당신은 할 수 있다...유형을 지정함으로써 그것을 고치다SUCSS
(다만, 이 조작으로 인해,{}
(필요한 타입을 만족시키지 못합니다).
var SUCSS : {fadeDiv: () => void;};
또는 처음부터 전체 값을 할당하고 TypeScript에서 유형을 추론하도록 합니다.
var SUCSS = {
fadeDiv: function () {
// Simplified version
alert('Called my func');
}
};
다음과 같은 변경을 제안합니다.
let propertyName = {} as any;
부분 유틸리티 유형을 사용하여 모든 개체 속성을 옵션으로 만들 수 있습니다.https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype
type Foo = {
bar: string;
}
const foo: Partial<Foo> = {}
foo.bar = "foobar"
myFunction(
contextParamers : {
param1: any,
param2: string
param3: string
}){
contextParamers.param1 = contextParamers.param1+ 'canChange';
//contextParamers.param4 = "CannotChange";
var contextParamers2 : any = contextParamers;// lost the typescript on the new object of type any
contextParamers2.param4 = 'canChange';
return contextParamers2;
}
맨 에는 이렇게 요.var fadeDiv = ...
fadeDiv = ...
변수가 실제로 선언되도록 합니다.
」Property 'fadeDiv' does not exist on type '{}'.
는 것 할 수 .fadeDiv
속성)을 지정합니다.
var SUCSS = {};
의 종류를 암묵적으로 SUCSS
속성을 가지지 않는 개체로 사용합니다.옵션 속성을 허용하려면 해당 유형을 명시적으로 정의해야 합니다.
type SUCESSType = {
fadeDiv?: () => void;
};
const SUCSS: SUCESSType = {};
that긴 fadeDiv
는 그 직후에 정의되기 때문에 속성을 옵션으로 할 필요는 없습니다(이 경우 속성을 호출하기 전에 속성이 존재하는지 테스트해야 합니다).
개체를 만들 때 함수를 할당할 수 있습니다.
const SUCSS = {
fadeDiv = function () { /* function body */ }
};
언급URL : https://stackoverflow.com/questions/34274487/typescript-property-does-not-exist-on-type
'programing' 카테고리의 다른 글
경고: "compass:server"(compass) 작업 실행 중 (0) | 2023.04.06 |
---|---|
'액세스 제어-허용-오리진' 없음 - 노드/Apache 포트 문제 (0) | 2023.04.06 |
각도와 함께 쉼표를 목록 구분 기호로 사용JS (0) | 2023.04.06 |
Angular.js:$eval은 어떻게 작동하며 왜 vanilla eval과 다른가요? (0) | 2023.04.06 |
PostgreSQL: JSON 열에서 특성 제거 (0) | 2023.04.06 |